<?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>201459</bug_id>
          
          <creation_ts>2019-09-04 07:26:52 -0700</creation_ts>
          <short_desc>Use WebProcess processIdentifier to identify Service Worker connections</short_desc>
          <delta_ts>2019-09-13 05:32:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>201430</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1567744</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-04 07:26:52 -0700</bug_when>
    <thetext>Use WebProcess processIdentifier to identify Service Worker connections</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568053</commentid>
    <comment_count>1</comment_count>
      <attachid>378055</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 01:06:27 -0700</bug_when>
    <thetext>Created attachment 378055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568070</commentid>
    <comment_count>2</comment_count>
      <attachid>378064</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 02:03:44 -0700</bug_when>
    <thetext>Created attachment 378064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568076</commentid>
    <comment_count>3</comment_count>
      <attachid>378067</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 02:21:32 -0700</bug_when>
    <thetext>Created attachment 378067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568078</commentid>
    <comment_count>4</comment_count>
      <attachid>378068</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 02:34:34 -0700</bug_when>
    <thetext>Created attachment 378068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568089</commentid>
    <comment_count>5</comment_count>
      <attachid>378073</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 03:30:35 -0700</bug_when>
    <thetext>Created attachment 378073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568111</commentid>
    <comment_count>6</comment_count>
      <attachid>378078</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 06:55:57 -0700</bug_when>
    <thetext>Created attachment 378078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568474</commentid>
    <comment_count>7</comment_count>
      <attachid>378180</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-06 03:14:43 -0700</bug_when>
    <thetext>Created attachment 378180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568518</commentid>
    <comment_count>8</comment_count>
      <attachid>378180</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-06 08:27:08 -0700</bug_when>
    <thetext>Comment on attachment 378180
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:324
&gt; +    HashMap&lt;uint64_t, WeakPtr&lt;WebSWServerConnection&gt;&gt; m_swConnections;

Going from a strong identifier type to uint64_t seems like a pretty bad regression for me :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568520</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-06 08:36:21 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Comment on attachment 378180 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378180&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:324
&gt; &gt; +    HashMap&lt;uint64_t, WeakPtr&lt;WebSWServerConnection&gt;&gt; m_swConnections;
&gt; 
&gt; Going from a strong identifier type to uint64_t seems like a pretty bad
&gt; regression for me :/

This is not a regression.
This map is an internal detail of NetworkConnectionToWebProcess that is not exposed anywhere else.
It is used to get a connection from a decoderId which is a uint64_t.
I can make the map take a PAL::SessionID, in which case I will need to add a way to create a PAL::SessionID from a uint64_t (similarly to makeObjectIdentifier).
I thought this was not really needed but can change the patch accordingly, this might improve the readability of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568524</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-06 08:48:40 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; Comment on attachment 378180 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=378180&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:324
&gt; &gt; &gt; +    HashMap&lt;uint64_t, WeakPtr&lt;WebSWServerConnection&gt;&gt; m_swConnections;
&gt; &gt; 
&gt; &gt; Going from a strong identifier type to uint64_t seems like a pretty bad
&gt; &gt; regression for me :/
&gt; 
&gt; This is not a regression.
&gt; This map is an internal detail of NetworkConnectionToWebProcess that is not
&gt; exposed anywhere else.
&gt; It is used to get a connection from a decoderId which is a uint64_t.
&gt; I can make the map take a PAL::SessionID, in which case I will need to add a
&gt; way to create a PAL::SessionID from a uint64_t (similarly to
&gt; makeObjectIdentifier).
&gt; I thought this was not really needed but can change the patch accordingly,
&gt; this might improve the readability of the code.

If it is really a sessionID then I think it should use the PAL::SessionID type, even if it means converting IPC ids to strong identifiers in a couple of places. Strong identifier types are safer and improve readability a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568553</commentid>
    <comment_count>11</comment_count>
      <attachid>378201</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-06 09:41:35 -0700</bug_when>
    <thetext>Created attachment 378201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568556</commentid>
    <comment_count>12</comment_count>
      <attachid>378201</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-06 09:55:36 -0700</bug_when>
    <thetext>Comment on attachment 378201
Patch

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

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:65
&gt; +    : SWServer::Connection(server, makeObjectIdentifier&lt;SWServerConnectionIdentifierType&gt;(processIdentifier.toUInt64()))

This is very weird, seems like terrible practice to convert one ID type to another.

&gt; Source/WebKit/WebProcess/Storage/WebSWClientConnection.cpp:60
&gt; +    , m_identifier(makeObjectIdentifier&lt;SWServerConnectionIdentifierType&gt;(Process::identifier().toUInt64()))

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569106</commentid>
    <comment_count>13</comment_count>
      <attachid>378359</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-09 02:50:08 -0700</bug_when>
    <thetext>Created attachment 378359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569143</commentid>
    <comment_count>14</comment_count>
      <attachid>378359</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-09 08:46:31 -0700</bug_when>
    <thetext>Comment on attachment 378359
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Use WebProcess processIdentifier to identify Service Worker connections

This change log does not explain why we&apos;re making this change, what was used before to identify the connections and why the new approach is better?

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:324
&gt; +    HashMap&lt;PAL::SessionID, WeakPtr&lt;WebSWServerConnection&gt;&gt; m_swConnections;

It does not look to me that we&apos;re going in the right direction. We want 1 sessionID per WebContent process so doing to a HashMap of SessionID on the NetworkConnectionToWebProcess does not make sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569158</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-09 09:17:06 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; Comment on attachment 378359 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378359&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Use WebProcess processIdentifier to identify Service Worker connections
&gt; 
&gt; This change log does not explain why we&apos;re making this change, what was used
&gt; before to identify the connections and why the new approach is better?

The change log says that these IDs are stable over network process crash.
This makes the network process crash handling easier and more robust on WebProcess side.

The change log also says that this removes a sync IPC.
We generally want to avoid sync IPC.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:324
&gt; &gt; +    HashMap&lt;PAL::SessionID, WeakPtr&lt;WebSWServerConnection&gt;&gt; m_swConnections;
&gt; 
&gt; It does not look to me that we&apos;re going in the right direction. We want 1
&gt; sessionID per WebContent process so doing to a HashMap of SessionID on the
&gt; NetworkConnectionToWebProcess does not make sense to me.

We need this map to preserve status quo and make sure service workers are working properly.

This patch is actually helping if we want to do the simplification of one sessionID per web process. We will just have to go from two sessionID-based maps (one in web process and one in network process) to singletons. This should be very straightforward compared to the current code base where we have 3 maps, two of them being not keyed by session IDs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569159</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-09 09:24:40 -0700</bug_when>
    <thetext>Third benefit in change log I forgot to mention here is the changes to WebSWServerToContextConnection which will make it possible to run service workers in web processes that also run pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569160</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-09 09:26:24 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #15)
&gt; (In reply to Chris Dumez from comment #14)
&gt; &gt; Comment on attachment 378359 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=378359&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; &gt; +        Use WebProcess processIdentifier to identify Service Worker connections
&gt; &gt; 
&gt; &gt; This change log does not explain why we&apos;re making this change, what was used
&gt; &gt; before to identify the connections and why the new approach is better?
&gt; 
&gt; The change log says that these IDs are stable over network process crash.
&gt; This makes the network process crash handling easier and more robust on
&gt; WebProcess side.
&gt; 
&gt; The change log also says that this removes a sync IPC.
&gt; We generally want to avoid sync IPC.
&gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:324
&gt; &gt; &gt; +    HashMap&lt;PAL::SessionID, WeakPtr&lt;WebSWServerConnection&gt;&gt; m_swConnections;
&gt; &gt; 
&gt; &gt; It does not look to me that we&apos;re going in the right direction. We want 1
&gt; &gt; sessionID per WebContent process so doing to a HashMap of SessionID on the
&gt; &gt; NetworkConnectionToWebProcess does not make sense to me.
&gt; 
&gt; We need this map to preserve status quo and make sure service workers are
&gt; working properly.
&gt; 
&gt; This patch is actually helping if we want to do the simplification of one
&gt; sessionID per web process. We will just have to go from two sessionID-based
&gt; maps (one in web process and one in network process) to singletons. This
&gt; should be very straightforward compared to the current code base where we
&gt; have 3 maps, two of them being not keyed by session IDs.

I do still have concerns about refactoring code that is wrong (before fixing what is wrong about it) and potentially making it harder to fix the bug by reinforcing the bad design.
My preference would be to first stop sharing service worker processes for sessionIDs and then refactor. Having a HashMap of sessionIDs on a connection to the webProcess looks very wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569161</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-09 09:31:27 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; (In reply to youenn fablet from comment #15)
&gt; &gt; (In reply to Chris Dumez from comment #14)
&gt; &gt; &gt; Comment on attachment 378359 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=378359&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; &gt; &gt; +        Use WebProcess processIdentifier to identify Service Worker connections
&gt; &gt; &gt; 
&gt; &gt; &gt; This change log does not explain why we&apos;re making this change, what was used
&gt; &gt; &gt; before to identify the connections and why the new approach is better?
&gt; &gt; 
&gt; &gt; The change log says that these IDs are stable over network process crash.
&gt; &gt; This makes the network process crash handling easier and more robust on
&gt; &gt; WebProcess side.
&gt; &gt; 
&gt; &gt; The change log also says that this removes a sync IPC.
&gt; &gt; We generally want to avoid sync IPC.
&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:324
&gt; &gt; &gt; &gt; +    HashMap&lt;PAL::SessionID, WeakPtr&lt;WebSWServerConnection&gt;&gt; m_swConnections;
&gt; &gt; &gt; 
&gt; &gt; &gt; It does not look to me that we&apos;re going in the right direction. We want 1
&gt; &gt; &gt; sessionID per WebContent process so doing to a HashMap of SessionID on the
&gt; &gt; &gt; NetworkConnectionToWebProcess does not make sense to me.
&gt; &gt; 
&gt; &gt; We need this map to preserve status quo and make sure service workers are
&gt; &gt; working properly.
&gt; &gt; 
&gt; &gt; This patch is actually helping if we want to do the simplification of one
&gt; &gt; sessionID per web process. We will just have to go from two sessionID-based
&gt; &gt; maps (one in web process and one in network process) to singletons. This
&gt; &gt; should be very straightforward compared to the current code base where we
&gt; &gt; have 3 maps, two of them being not keyed by session IDs.
&gt; 
&gt; I do still have concerns about refactoring code that is wrong (before fixing
&gt; what is wrong about it) and potentially making it harder to fix the bug by
&gt; reinforcing the bad design.
&gt; My preference would be to first stop sharing service worker processes for
&gt; sessionIDs and then refactor. Having a HashMap of sessionIDs on a connection
&gt; to the webProcess looks very wrong.

And by. the way, I do not mind doing the work for having separate service worker processes per session if you&apos;d like. The only reason I have not done so last week is because this patch is blocking me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569219</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-09 11:47:09 -0700</bug_when>
    <thetext>&gt; I do still have concerns about refactoring code that is wrong (before fixing
&gt; what is wrong about it) and potentially making it harder to fix the bug by
&gt; reinforcing the bad design.

I don&apos;t think there is consensus yet to stop sharing web processes for service worker with different sessionIDs.
This is the current implementation, it works and there are some known perf benefits. Agreed there are some potential privacy risks, that would be nice to fix.

To fix this bug, the patch will mostly change UIProcess code, not code doing WebProcess/NetworkProcess communication, which is the part you seem to be against. So this part of the patch is not making it harder to fix it in any way.

In fact, the is actually getting us closer to the fix.
The current code base is not always giving the session ID when creating a service worker process. With the patch, the service worker process is always launched with a known session ID (see WebProcessPool::establishWorkerContextConnectionToNetworkProcess).
This patch is also helpful for simplifications to the code base when service workers are sessionID partitioned.

&gt; My preference would be to first stop sharing service worker processes for
&gt; sessionIDs and then refactor. Having a HashMap of sessionIDs on a connection
&gt; to the webProcess looks very wrong.

I think we should continue with the plan to run service workers in existing web processes that run pages. Once done (and we are not too far), the bug you mention will be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569241</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-09 12:26:48 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #19)
&gt; &gt; I do still have concerns about refactoring code that is wrong (before fixing
&gt; &gt; what is wrong about it) and potentially making it harder to fix the bug by
&gt; &gt; reinforcing the bad design.
&gt; 
&gt; I don&apos;t think there is consensus yet to stop sharing web processes for
&gt; service worker with different sessionIDs.

This exact issue had to be fixed before shipping PSON, service workers are not any different. This has to be fixed asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569242</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-09 12:27:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #20)
&gt; (In reply to youenn fablet from comment #19)
&gt; &gt; &gt; I do still have concerns about refactoring code that is wrong (before fixing
&gt; &gt; &gt; what is wrong about it) and potentially making it harder to fix the bug by
&gt; &gt; &gt; reinforcing the bad design.
&gt; &gt; 
&gt; &gt; I don&apos;t think there is consensus yet to stop sharing web processes for
&gt; &gt; service worker with different sessionIDs.
&gt; 
&gt; This exact issue had to be fixed before shipping PSON, service workers are
&gt; not any different. This has to be fixed asap.

+ Geoff. Brady &amp; Alex are already in cc and are also familiar with this matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569246</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-09 12:31:18 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #19)
&gt; &gt; I do still have concerns about refactoring code that is wrong (before fixing
&gt; &gt; what is wrong about it) and potentially making it harder to fix the bug by
&gt; &gt; reinforcing the bad design.
&gt; 
&gt; I don&apos;t think there is consensus yet to stop sharing web processes for
&gt; service worker with different sessionIDs.
&gt; This is the current implementation, it works and there are some known perf
&gt; benefits. Agreed there are some potential privacy risks, that would be nice
&gt; to fix.

&gt; To fix this bug, the patch will mostly change UIProcess code, not code doing
&gt; WebProcess/NetworkProcess communication, which is the part you seem to be
&gt; against. So this part of the patch is not making it harder to fix it in any
&gt; way.

I had started to write that patch (split Service workers by sessionID) and had to stop when I saw your refactoring patch because we are clearly touching the same code.

I also think the priority should be to fix our security / privacy issue before refactoring code to help with performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569357</commentid>
    <comment_count>23</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-09-09 17:09:28 -0700</bug_when>
    <thetext>&gt; I don&apos;t think there is consensus yet to stop sharing web processes for
&gt; service worker with different sessionIDs.
&gt; This is the current implementation, it works and there are some known perf
&gt; benefits. Agreed there are some potential privacy risks, that would be nice
&gt; to fix.

I didn&apos;t read the rest of the discussion, but I want to comment on this detail: It is a  Privacy requirement not to share the same web process for distinct sessionIDs. You can read more in &lt;rdar://problem/48421064&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569934</commentid>
    <comment_count>24</comment_count>
      <attachid>378359</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-11 08:50:59 -0700</bug_when>
    <thetext>Comment on attachment 378359
Patch

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

r=me, let&apos;s split the sessions in a follow-up.

&gt; Source/WebCore/workers/service/ServiceWorkerTypes.h:75
&gt;  using SWServerConnectionIdentifier = ObjectIdentifier&lt;SWServerConnectionIdentifierType&gt;;

Why isn&apos;t this simply using SWServerConnectionIdentifier = ProcessIdentifier; ?

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:298
&gt; +                sessionID = server.sessionID();

Seems unfortunate we&apos;ll keep iterating even though we&apos;ve found the sessionID.

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:893
&gt; +    m_swContextConnection = WebSWServerToContextConnection::create(m_networkProcess, registrableDomain, m_connection.get());

WTFMove(registrableDomain) ?

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:699
&gt; +    WebsiteDataStore* websiteDataStore = WebsiteDataStore::existingNonDefaultDataStoreForSessionID(sessionID);

auto*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570174</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-11 23:23:39 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #24)
&gt; Comment on attachment 378359 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378359&amp;action=review
&gt; 
&gt; r=me, let&apos;s split the sessions in a follow-up.
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerTypes.h:75
&gt; &gt;  using SWServerConnectionIdentifier = ObjectIdentifier&lt;SWServerConnectionIdentifierType&gt;;
&gt; 
&gt; Why isn&apos;t this simply using SWServerConnectionIdentifier =
&gt; ProcessIdentifier; ?

There are some uses of makeObjectIdentifier&lt;SWServerConnectionIdentifierType&gt;
We could rewrite them as makeObjectIdentifier&lt;ProcessIdentifierType&gt; but that seems a bit weird.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:298
&gt; &gt; +                sessionID = server.sessionID();
&gt; 
&gt; Seems unfortunate we&apos;ll keep iterating even though we&apos;ve found the sessionID.

We need to iterate other all SWServers, so that all related service worker states get updated.
This code will go away with next patch (bug 201643).

&gt; &gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:893
&gt; &gt; +    m_swContextConnection = WebSWServerToContextConnection::create(m_networkProcess, registrableDomain, m_connection.get());
&gt; 
&gt; WTFMove(registrableDomain) ?

This refactoring is done in next patch (bug 201643) where we touch the constructor.

&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:699
&gt; &gt; +    WebsiteDataStore* websiteDataStore = WebsiteDataStore::existingNonDefaultDataStoreForSessionID(sessionID);
&gt; 
&gt; auto*

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570179</commentid>
    <comment_count>26</comment_count>
      <attachid>378626</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-12 00:00:55 -0700</bug_when>
    <thetext>Created attachment 378626
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570191</commentid>
    <comment_count>27</comment_count>
      <attachid>378626</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-12 01:18:22 -0700</bug_when>
    <thetext>Comment on attachment 378626
Patch for landing

Clearing flags on attachment: 378626

Committed r249801: &lt;https://trac.webkit.org/changeset/249801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570192</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-12 01:18:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570194</commentid>
    <comment_count>29</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-12 01:19:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55293963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570416</commentid>
    <comment_count>30</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-09-12 15:58:55 -0700</bug_when>
    <thetext>This change has caused http/tests/workers/service/postmessage-after-sw-process-crash.https.html to frequently fail and http/tests/workers/service/postmessage-after-terminate.https.html to frequently time out Mojave / iOS 12 Release WK2 bots

--- /Volumes/Data/slave/ios-simulator-12-release-tests-wk2/build/layout-test-results/http/tests/workers/service/postmessage-after-sw-process-crash.https-expected.txt
+++ /Volumes/Data/slave/ios-simulator-12-release-tests-wk2/build/layout-test-results/http/tests/workers/service/postmessage-after-sw-process-crash.https-actual.txt
@@ -1,5 +1,5 @@
 * Sending State to Service Worker
 * Asking Service Worker if it received the state
 * Simulating Service Worker process crash
-PASS: service worker lost the state and responded the postMessage after process termination
+FAIL: service worker did not respond after process termination
 

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fworkers%2Fservice%2Fpostmessage-after-sw-process-crash.https.html%20http%2Ftests%2Fworkers%2Fservice%2Fpostmessage-after-terminate.https.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570423</commentid>
    <comment_count>31</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-09-12 16:59:39 -0700</bug_when>
    <thetext>Reverted r249801 for reason:

Caused two servier worker layout tests to become flaky.

Committed r249820: &lt;https://trac.webkit.org/changeset/249820&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570550</commentid>
    <comment_count>32</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-13 04:28:07 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #31)
&gt; Reverted r249801 for reason:
&gt; 
&gt; Caused two servier worker layout tests to become flaky.
&gt; 
&gt; Committed r249820: &lt;https://trac.webkit.org/changeset/249820&gt;

There was a race condition between destruction of the old context connection and the new one, which is screwing the connection map.
I updated the patch to destroy the WebSWServerToContextConnection just after it gets closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570551</commentid>
    <comment_count>33</comment_count>
      <attachid>378723</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-13 04:29:21 -0700</bug_when>
    <thetext>Created attachment 378723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570557</commentid>
    <comment_count>34</comment_count>
      <attachid>378723</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-13 05:32:56 -0700</bug_when>
    <thetext>Comment on attachment 378723
Patch

Clearing flags on attachment: 378723

Committed r249832: &lt;https://trac.webkit.org/changeset/249832&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570558</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-13 05:32:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378055</attachid>
            <date>2019-09-05 01:06:27 -0700</date>
            <delta_ts>2019-09-05 02:03:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190905100625.patch</filename>
            <type>text/plain</type>
            <size>84797</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I3YmFlM2MwYjZhOGE1
NThlOTY0NGY3ODQ3MzZhZmViNDEwMmNlZS4uODY3NjE3NmQ1YWFiZDdmOTBmMWY5MzJhMTMwZGRm
Nzk1Y2Q3ZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92aW5nIFNX
IHRvIHByb2Nlc3NJZGVudGlmaWVyIC0gYWxtb3N0IHdvcmtpbmcgYnV0IHNlc3Npb24gSURzCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lv
bklEIHRvIGVhc2UgTmV0d29ya1Byb2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2Vz
cyBjb25uZWN0aW9uLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIExl
dCBjb25uZWN0aW9uIGlkZW50aWZpZXIgYmUgc2V0IGluIGNvbnN0cnVjdG9yIGluc3RlYWQgb2Yg
Z2VuZXJhdGVkLgorCiAyMDE5LTA5LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnRyb2R1Y2UgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uIHRvIG1ha2Ug
U1dDbGllbnRDb25uZWN0aW9uIG1vbm8tdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlNjgzMjIxNjAxNzFi
Zjg3NWRiNjYxZTQzZGQ2NzRiOGRmZTZjNmIuLjNkYjAzZjBkNDQ4ZGFiNGE4MjE4Njc4YzI0MTA2
NjFiODY5ODkzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTExIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gYmUgc3RvcmVkIGluIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzCisgICAgICAgIFRoZXkgYXJlIG5vdyBrZXllZCBieSBzZXNzaW9uIElEcyBoZW5jZSB3aHkg
V2ViU1dDbGllbnRDb25uZWN0aW9uIGlzIHVzaW5nIHRoZSBzZXNzaW9uIElEIGFzIG1lc3NhZ2Ug
Y29ubmVjdGlvbiBJRC4KKyAgICAgICAgQ3JlYXRpb24gbm8gbG9uZ2VyIHJlcXVpcmVzIGEgc3lu
YyBJUEMgc2luY2UgdGhlIGNvbm5lY3Rpb24gaXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSBhIHNl
c3Npb24gSUQgYW5kIGEgcHJvY2VzcyBJRC4KKyAgICAgICAgVGhlc2UgSURzIGFyZSBzdGFibGUg
b3ZlciBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdpdGhpbiBOZXR3b3JrUHJvY2Vz
cywgYSBzZXJ2ZXIgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIGJ5IGEgU1dTZXJ2ZXIgd2hpY2ggaXMg
c2Vzc2lvbiBJRCBzcGVjaWZpYy4KKyAgICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgcHJvY2VzcyBp
ZGVudGlmaWVyIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAg
TW92ZSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gYmUgb3duZWQgYnkgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgaXQgYXQg
dGltZSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGFza3MgdG8gY3JlYXRlIGFuIElQQyBjb25uZWN0aW9u
LAorICAgICAgICBpdCBpcyBub3cgY3JlYXRlZCBzaW1pbGFybHkgdG8gV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uIG9uY2UgV2ViUHJvY2VzcyBhc2tzIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAgVGhpcyB3
aWxsIGFsbG93IGV4aXN0aW5nIFdlYlByb2Nlc3MgdG8gcnVuIHNlcnZpY2Ugd29ya2Vycy4KKyAg
ICAgICAgQSBtYXAgaXMgc3RpbGwga2VwdCBpbiBOZXR3b3JrIFByb2Nlc3MgdG8gcmV1c2UgY29u
dGV4dCBjb25uZWN0aW9ucyBzaW5jZSB0aGVzZSBjb25uZWN0aW9ucyBhcmUgbm90IHNlc3Npb25J
RCBzcGVjaWZpYy4KKworICAgICAgICBNaWdyYXRlIGZyb20gYSBzaW5nbGUgYm9vbGVhbiB0byBh
IEhhc2hTZXQgdG8gdHJhY2sgd2hldGhlciBzb21lIGNvbm5lY3Rpb25zIGFyZSBpbiB0aGUgcHJv
Y2VzcyBvZiBiZWluZyBjcmVhdGVkLgorICAgICAgICBQcmV2aW91c2x5IGlmIHR3byByZXF1ZXN0
cyB0byBjcmVhdGUgY29ubmVjdGlvbnMgd2VyZSBkb25lIHNob3J0bHkgb25lIGFmdGVyIHRoZSBv
dGhlciBvbiBkaWZmZXJlbnQgcmVnaXN0cmFibGUKKyAgICAgICAgZG9tYWlucywgdGhlIHNlY29u
ZCByZXF1ZXN0IHdvdWxkIG5vdCBiZSBwcm9jZXNzZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zm9yRWFj
aFNXU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJT
V1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dW5y
ZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JT
ZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZXhp
c3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6fldlYlNXQ2xpZW50Q29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnNjaGVkdWxlSm9iSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVtb3ZlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0Ns
aWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29u
bmVjdGlvblRvU2VydmVyTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5
bmNUZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246OnVwZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENv
bm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJBZ2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisKIDIwMTktMDktMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9iaWxlU2FmYXJpIG1heSBjcmFzaCB3aGVuIGludm9raW5nIHRoZSBDKysgbGFt
YmRhIGluIC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRl
eCA3MzkxYzRjMjFhMzZkNTBkNzdmMjA2ZDdiM2VlYmQwNWIwNjQwNGUwLi43NjBjNGNkMGEzYzZl
ZWQ3NWU4YTg2ODY2MmU5NWM0OTA1OTAxNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC05OSw5ICs5OSw5
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyBtZXNzYWdlID0geyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcG9ydHNPckV4
Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgIGF1dG8gc291cmNlSWRlbnRpZmll
ciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCku
aWRlbnRpZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW21lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50
aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRleHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgp
IG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IGNvbnRleHQuc2Vz
c2lvbklEKCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZp
ZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRl
eHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSkKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRp
Zmllciwgc291cmNlT3JpZ2luKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBt
ZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogICAgIH0pOwogCiAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmZTBjMDg0OTJjMzUyMTdhMjM2ZTIz
MmMwNmJjNWFiNjM2Nzg4NmExLi5mZmZiNzExZGUwYjJmZGZiN2RhYTkxZDk2MGU0NGEzYTlmOTEw
M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtl
clN0YXJ0ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChPcHRpb25hbDxTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0YWxs
KE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggOTMyNmEzYmFjNjU5
YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMC4uOWNkOGRlMGQwNzM1NzNkNWU4NTNjMzc5OTRi
YWM1MzU1ZTk5MjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgU2Vjb25kcyB0ZXJtaW5hdGlvbkRlbGF5IHsgMTBfcyB9OwogCi1TV1NlcnZl
cjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyKQorU1dTZXJ2ZXI6OkNv
bm5lY3Rpb246OkNvbm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZlciwgSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9pZGVudGlmaWVyKFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCmluZGV4IDBjNTdhMzU3ZWZlM2VjYjRmNDE5N2NjOTFmMDg3MDIyMGI2
NjcwMGQuLmIzOTRlYmYzYTY1YWIxMDkwYmZhZDgyZTFlZDQ4ZDYwZTRiOTJmMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTU2
LDYgKzU2LDcgQEAgY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFz
cyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBT
ZXJ2aWNlV29ya2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0OwpAQCAtODYsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNv
bnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBjb25z
dCBTZXJ2aWNlV29ya2VyRGF0YSYgbmV3Q29udHJvbGxlcikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mKSA9IDA7CiAKQEAgLTkzLDcgKzk1LDcgQEAgcHVibGljOgogICAgICAg
ICBjb25zdCBTV1NlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29ubmVjdGlv
bihTV1NlcnZlciYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVy
JiwgSWRlbnRpZmllcik7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGFjM2EyMWExZDQ3OGU2NWIyNDFmNjUzODMzYjU5YjlmZjQ1M2Q0
MTEuLjQ3MGY3OTA5YWFiMTVjNTc0YWJkNGI3YTY2MTE1NjdiNGViNzZiODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yMTQsMjEgKzIxNCwyMiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3RpbwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlv
biA9IG1fc3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAg
IGlmIChhdXRvKiBzd0Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnMuZ2V0KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkKICAgICAgICAgICAgIHN3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25U
b0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKLSAgICAgICAg
ICAgIGNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgQVNTRVJUKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIGlm
IChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVj
dGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBt
X25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0
aW9uKGNvbm5lY3Rpb24pKSB7Ci0gICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZUZldGNoVGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIEFTU0VS
VChtX3N3Q29udGV4dENvbm5lY3Rpb24pOworICAgICAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0
aW9uKSB7CisgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVGZXRj
aFRhc2tNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjY5LDcgKzI3MCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byBzd0Nvbm5lY3Rpb24gPSBtX3N3
Q29ubmVjdGlvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpZiAoYXV0
byogc3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpCiAgICAgICAgICAgICBzd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0y
ODYsMTAgKzI4NywxOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoUmVmUHRyPFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0
d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24o
Y29ubmVjdGlvbikpIHsKLSAgICAgICAgLy8gU2VydmljZSBXb3JrZXIgcHJvY2VzcyBleGl0ZWQu
Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2Fz
Q2xvc2VkKHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGF1
dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9zd0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJs
ZURvbWFpbigpOworCisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNs
b3NlZCgpOworCisgICAgICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7Cisg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0oYXV0byYgc2VydmVy
KSB7CisgICAgICAgICAgICBzZXJ2ZXIubWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFp
bkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICBpZiAoc2VydmVy
Lm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgICAgICBzZXNzaW9uSUQgPSBzZXJ2ZXIuc2Vzc2lv
bklEKCk7CisgICAgICAgIH0pOworICAgICAgICBpZiAoc2Vzc2lvbklEKQorICAgICAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3Ry
YWJsZURvbWFpbiwgKnNlc3Npb25JRCk7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7CkBAIC04NzgsMTggKzg4OCwyMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0aW9ucygpCiAgICAgfQogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGF1dG8mIHNlcnZlciA9
IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGF1
dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdv
cmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKLSAgICAK
LSAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyID0gY29ubmVjdGlvbi0+aWRlbnRpZmllcigpOwotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlv
biAtICVzIiwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwg
bV93ZWJQcm9jZXNzSWRlbnRpZmllciwgc2Vzc2lvbklEKTsKIAotICAgIEFTU0VSVCghbV9zd0Nv
bm5lY3Rpb25zLmNvbnRhaW5zKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSk7Ci0gICAgbV9z
d0Nvbm5lY3Rpb25zLmFkZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbWFrZVdlYWtQdHIo
KmNvbm5lY3Rpb24pKTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNz
aW9uSUQudG9VSW50NjQoKSkpOworICAgIG1fc3dDb25uZWN0aW9ucy5hZGQoc2Vzc2lvbklELnRv
VUludDY0KCksIG1ha2VXZWFrUHRyKCpjb25uZWN0aW9uKSk7CiAgICAgc2VydmVyLmFkZENvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgbV9zd0NvbnRleHRDb25uZWN0aW9u
ID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUobV9uZXR3b3JrUHJvY2Vz
cywgcmVnaXN0cmFibGVEb21haW4sIG1fY29ubmVjdGlvbi5nZXQoKSk7CisKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikgeworICAgICAgICBz
ZXJ2ZXIuc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKm1fc3dDb250ZXh0Q29ubmVj
dGlvbik7CisgICAgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IDQyYzE3ZTFiMDViNDA2YjM5NGM5NTRhYjc5YzJhMzg2NDk5MjQxMzQuLmU4YTU2ZmQ3ZTJkMWQ1
MWU4MzkwMjc1NzkyNmM3ZjlhNTQ5MGZlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAg
LTY4LDYgKzY4LDcgQEAgY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiBjbGFzcyBOZXR3b3Jr
U29ja2V0U3RyZWFtOwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OwogY2xhc3MgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OwogdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogCiBuYW1lc3BhY2Ug
TmV0d29ya0NhY2hlIHsKQEAgLTIwOCw3ICsyMDksOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciYmKT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoU1dDb250
ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CiAjZW5kaWYKIApAQCAtMzE5LDcgKzMyMSw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFw
PFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdl
YWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIFJlZlB0
cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmZDA5MmYzMTQ3OTMyNTRjNGZiNTQ3
OThmYjdlNzA2MDdlMzZiNjcxLi43NzdhZGZiN2NiNDlkN2U2YWNiMTI2NzVmNGMxYWNmMjk1Yzlm
NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgx
LDcgKzgxLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9u
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKICNlbmRpZgogCiAgICAgQ3JlYXRl
TmV3TWVzc2FnZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXIgcG9ydDEsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4
IDE0MzdkMWFlMWNkM2VmZTA5MWJkNGQ1MDgzNGUyNDAyMzJiNTEyOTEuLjE4NzI2ZjZlM2RiY2Jm
MDRlZDM4MjJkMGI4ZjM3YmM4ZTRjMTQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMTUsMTcgKzIxNSw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewot
ICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgp
KTsKLSAgICAgICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhdXRvKiB3ZWJTV0Nvbm5lY3Rp
b24gPSBjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rp
b24pKSB7Ci0gICAgICAgICAgICB3ZWJTV0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
fQotI2VuZGlmCiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKIH0KIApAQCAtNDE0LDcgKzQwMyw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50
Pj4KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBjcmVhdGVJUEND
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CiAgICAgaWYgKCFpcGNDb25uZWN0aW9uKSB7CkBAIC00
MzEsMjQgKzQyMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShpcGNDb25uZWN0aW9uLT5zZWNvbmQpKTsKIAogICAgIGNvbm5lY3Rpb24u
c2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgp
KTsKLSAgICAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGlzU2VydmljZVdv
cmtlclByb2Nlc3MpIHsKLSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0Nv
bnRleHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24g
PSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFi
bGVEb21haW4sIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKLSAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAgICAgICBtX3dhaXRp
bmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOwotCi0gICAgICAg
IGZvciAoYXV0byogc2VydmVyIDogU1dTZXJ2ZXI6OmFsbFNlcnZlcnMoKSkKLSAgICAgICAgICAg
IHNlcnZlci0+c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rp
b24pOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nl
c3MpOwotICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7Ci0jZW5kaWYKIAogICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpOwogfQpAQCAtMjM5MCwzNiArMjM2MSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRT
YW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZQog
I2VuZGlmIC8vIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNz
Ojpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gOiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnZhbHVlcygpKSB7Ci0gICAgICAg
IGlmIChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5l
Y3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5nZXQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKLXsKLSAgICBhdXRv
JiByZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnJlZ2lzdHJh
YmxlRG9tYWluKCk7Ci0gICAgCi0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVj
dGlvbkNsb3NlZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1Nl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lz
dHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBp
ZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJD
b25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3Rp
bGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwotICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXVEY6Om51bGxvcHQpOwotICAgIH0KLX0K
LQotYm9vbCBOZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9y
UmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKSBjb25zdAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Zm9yRWFjaFNXU2VydmVyKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoU1dTZXJ2ZXImKT4mIGNhbGxiYWNrKQogewotICAgIHJldHVybiBXVEY6OmFu
eU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAg
cmV0dXJuIHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soKnNlcnZlcik7
CiB9CiAKIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTI0NDcsNDAgKzIzOTIsMzYgQEAgV2ViU1dPcmlnaW5T
dG9yZSogTmV0d29ya1Byb2Nlc3M6OmV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PFdlYlNXT3JpZ2luU3RvcmUmPihz
d1NlcnZlci0+b3JpZ2luU3RvcmUoKSk7CiB9CiAKK2Jvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICByZXR1cm4gV1RG
OjphbnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7CisgICAg
ICAgIHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0pOworfQorCiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluKQogewogICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25zLmdldChyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNy
ZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKLSAgICBpZiAobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24pCisgICAgaWYgKG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lz
dHJhYmxlRG9tYWluKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fd2FpdGluZ0ZvclNl
cnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKLSAgICBpZiAoc2Vzc2lvbklE
KQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24ocmVnaXN0cmFibGVEb21haW4sICpzZXNzaW9uSUQp
LCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwotfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQotewotICAgIGlmIChh
dXRvIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGRlc3RpbmF0aW9uSWRl
bnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24t
PnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5j
b250ZXh0SWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291
cmNlT3JpZ2luKTsKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFi
bGVEb21haW4pOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNs
aWVudElkZW50aWZpZXImIHNvdXJjZSwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBpZiAoYXV0byBjb25u
ZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWRlbnRpZmllcikp
Ci0gICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKGRlc3RpbmF0
aW9uLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2UpOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9u
ID0gc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY29ubmVjdGlvbihkZXN0aW5hdGlvbklk
ZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9u
LT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIu
Y29udGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNv
dXJjZU9yaWdpbik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NF
UlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICBBU1NF
UlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIo
KSkpOwotICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbi5pZGVudGlmaWVy
KCksIG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKTsKICAgICBhdXRvKiBzdG9yZSA9IGV4aXN0aW5n
U1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSk7CiAgICAgQVNT
RVJUKHN0b3JlKTsKICAgICBpZiAoc3RvcmUpCkBAIC0yNDg5LDI2ICsyNDMwLDIxIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29u
bmVjdGlvbiYgY29ubmVjdGlvCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAg
IEFTU0VSVChtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigp
KS5nZXQoKSA9PSAmY29ubmVjdGlvbik7Ci0gICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLnJlbW92
ZShjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGF1dG8qIHN0b3JlID0gZXhpc3Rp
bmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihjb25uZWN0aW9uLnNlc3Npb25JRCgpKSkKICAgICAg
ICAgc3RvcmUtPnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVl
ZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byYg
cmVnaXN0cmFibGVEb21haW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxl
RG9tYWluKCk7Ci0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlz
IG5vIGxvbmdlciBuZWVkZWQsIHRlcm1pbmF0aW5nIGl0Iik7Ci0gICAgc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDog
bV9zd1NlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zv
clJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAK
LSAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBt
X3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgQVNTRVJUKCFtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rp
b24ucmVnaXN0cmFibGVEb21haW4oKSkpOworICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5z
LnJlbW92ZShjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIG1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNv
bm5lY3Rpb24pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7
CisgICAgQVNTRVJUKG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKSkgPT0gJmNvbm5lY3Rpb24pOworICAgIG1fc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDA5MGQ0N2YwMWFkMmRjZWQ0OTlhYmU4OTdmNzBiOWE0Y2U5MDdjM2EuLjlk
ODg2ZmQ4NDJiYWUwZmFhOWJkODhmMzU1MjcwNmVmZDhmZjZlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMwMCwxNiArMzAwLDE3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIHZvaWQgY3Jl
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgUEFM
OjpTZXNzaW9uSUQpOwogICAgIAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNl
c3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rp
b24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIAotICAgIHZvaWQgc3dDb250
ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7Ci0gICAgCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25u
ZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYp
OwotICAgIHZvaWQgY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoUmVmPFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4mJik7CisgICAgdm9pZCByZWdpc3RlclNXQ29udGV4
dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKKworICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAg
ICB2b2lkIGZvckVhY2hTV1NlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNXU2Vy
dmVyJik+Jik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zOTUsNyAr
Mzk2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwot
ICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0
dGFjaG1lbnQ+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2
b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBA
IC00NjQsMTMgKzQ2NSwxMiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJ
UEM6OkF0dGFjaG1lbnQmKTsKICAgICAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3Jl
OjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
T3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIpOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICAKICAgICB2b2lkIGRpc2FibGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKICAgICAKICAgICBXZWJTV09yaWdp
blN0b3JlKiBleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBj
b25zdDsKLSAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAg
ICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmIHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOwogI2VuZGlmCkBAIC01NDAsMTIgKzU0MCwxMSBAQCBwcml2YXRlOgogICAgIExv
Y2sgbV9zdG9yYWdlVGFza011dGV4OwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBSZWZQdHI8V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKLSAg
ICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFs
c2UgfTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qPiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOwogICAg
IGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
IHsgZmFsc2UgfTsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1fc3dEYXRh
YmFzZVBhdGhzOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTV1NlcnZlcj4+IG1fc3dTZXJ2ZXJzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+
PiBtX3N3U2VydmVyQ29ubmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYmYyMWEyZGM3YmFkYWY2MjAzOTVjZDA1YzYx
ZWQyNDEyMjkzMmY5ZC4uYWIzYmFiYjQ4NGU4N2ZiMzMzNzNkOWE4OTZjMjUxMmQxOTY1MWQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0
IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRp
b24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgYm9vbCBp
c1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3Ry
YWJsZURvbWFpbikgLT4gKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50
aWZpZXIpIEFzeW5jCisgICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpIC0+IChPcHRpb25hbDxJ
UEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYwogCiAjaWYgVVNFKFNP
VVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQpAQCAtMTUz
LDEwICsxNTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgU2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3RvcnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGhhbmRsZSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgUG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCi0KLSAgICBQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3Nh
Z2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlLCBXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQot
CisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRp
ZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5KCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCmluZGV4IDZiY2I5OWExMDBmODZiNjk5Yzc3MTVkNWI1ZjQ0ZjhlYWY2ODVm
YmEuLjkzYmY1MTk4NzY3NjFmMDczMDFmNGIwYmYyMjRlNzY3YWU0YThkNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC02MSw4ICs2MSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogI2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFNXU0VSVkVSQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19F
UlJPUl9JRihtX3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdv
cmtlciwgIiVwIC0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKIAotV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0
d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBTV1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBTV1NlcnZlcjo6
Q29ubmVjdGlvbihzZXJ2ZXIpCitXZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29u
bmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFNXU2VydmVyJiBzZXJ2ZXIs
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIsIFNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgOiBTV1NlcnZlcjo6Q29ubmVjdGlv
bihzZXJ2ZXIsIG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXJUeXBlPihwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKSkKICAgICAsIG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKICAgICAsIG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAs
IG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCkBAIC0yNTMsMTMgKzI1MywxMyBAQCB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihTZXJ2aWNlV29y
a2VySm9iRGF0YSYmIGpvYkRhdGEpCiAgICAgc2VydmVyKCkuc2NoZWR1bGVKb2IoV1RGTW92ZShq
b2JEYXRhKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0
SWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwg
Y29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewog
ICAgIGF1dG8qIHNvdXJjZVNlcnZpY2VXb3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIGlmICghc291cmNlU2VydmljZVdvcmtlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpQb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudCB7IGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIs
IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZVNlcnZpY2VXb3JrZXItPmRhdGEoKSwgc291cmNlT3Jp
Z2luIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVy
LCBtZXNzYWdlLCBzb3VyY2VTZXJ2aWNlV29ya2VyLT5kYXRhKCksIHNvdXJjZU9yaWdpbiB9KTsK
IH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2
NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCA5MDAyM2Q2NjE4NGZkMmQxODcxZDQ0ODk2MTdhMGY5
ZjY3MmEwMjhiLi5hZGU4ZTdlM2E2MzBjNjE1MGI5MWFhOWFiMjAzMDY2NTU2OWM3NzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+CiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01
Myw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBXZWJTV1NlcnZlckNv
bm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dT
ZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCk7CisgICAgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBJUEM6OkNv
bm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihjb25zdCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mKSA9
IGRlbGV0ZTsKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKQEAgLTY0LDkg
KzY1LDYgQEAgcHVibGljOgogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4
dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKTsKLQogcHJpdmF0ZToKICAgICAvLyBJbXBs
ZW1lbnQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJv
Y2VzcykKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJK
b2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CkBAIC05
NCw2ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOwogICAg
IHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXImJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAorICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNl
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5h
bDsKKwogICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViQ29yZTo6
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJikgZmluYWw7CiAKICAgICBib29sIGlzVGhyb3R0
bGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlYWJsZTsgfQpAQCAtMTAyLDggKzEw
MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0
bGVhYmxlKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAorICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7CisKICAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsgfQotICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaWRlbnRpZmllcigpLnRv
VUludDY0KCk7IH0KKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0KICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCBzZW5kVG9Db250ZXh0UHJvY2VzcyhXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBVJiYgbWVzc2FnZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXgg
YmZlNDAzZGY1ZWJhMjg5NDY5NzU3YzMwNDgxODE0ZGU2YjVhNzMzMC4uN2IxZTkyMDcxMDljZDE0
NTA3NmI5YWE3MjAwOTk1MTE5ZjM4YmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw5ICs0NiwxMyBAQCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihOZXR3b3JrUHJvY2VzcyYgbgogICAgICwgbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogeworICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CiB9CiAK
LVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbigpID0gZGVmYXVsdDsKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQogCiBJUEM6OkNvbm5lY3Rp
b24qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdAogewpAQCAtNjUsNiArNzEsMTIgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQogICAgICAgICBmZXRjaC0+ZmFpbChSZXNv
dXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBX
b3JrZXIgY29udGV4dCBjbG9zZWQiX3MgfSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0
aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdl
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbikKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fbmV0d29ya1By
b2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvbm5lY3Rpb24oZGVzdGluYXRp
b25JZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlm
aWVyLmNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VP
cmlnaW4pOworfQorCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFs
bFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0
YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFs
bFNlcnZpY2VXb3JrZXIgeyBkYXRhLCBzZXNzaW9uSUQsIHVzZXJBZ2VudCB9KTsKQEAgLTExNyw3
ICsxMjksMTcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlz
aFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpCiB7Ci0gICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQo
KnRoaXMpOworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzLT5uZWVkc1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29y
a2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVybWluYXRpbmcgaXQiKTsKKyAgICB0
ZXJtaW5hdGUoKTsKKworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0o
YXV0byYgc2VydmVyKSB7CisgICAgICAgIHNlcnZlci5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJh
YmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIH0pOworCisg
ICAgY29ubmVjdGlvbkNsb3NlZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDkwYTA3ZWEy
NGJiYWQzMzc1NjdhNGJlYTM3MjI1ZjM4MjIxMWFhNWIuLjIwZWMxNWU2YmY5OWY4ZWQ2OTJkMGJj
MmI5ZDJkYTVkMGU3ZjhjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RydWN0IEZldGNoT3B0aW9uczsKK3N0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtODIsNiArODMsOCBAQCBwcml2YXRlOgog
ICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5h
bDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFs
OwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9z
dCBXZWJQcm9jZXNzCiAgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KSBmaW5hbDsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5k
ZXggOTk0OWUzZDQzNWYyNDdiNTBiZmQ0NDRkNTA2ZGUyYTk1MjdkYzUyZC4uZTMxNThmYzkwYjM1
NzRlNGI4NjBiZDI0MWMyN2ExYjA0MjZlYjgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zNiw2
ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiB7CiAg
ICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENs
YWltKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBTZXRTY3JpcHRSZXNv
dXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2Ny
aXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSk7
CisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVz
dGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdl
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VP
cmlnaW4pCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA0NDkwMWE4YzM4N2I3ODAwNTA5ODdmOWRiMTY1ZjY0NDBmMmIxNDBiLi41MWIzZTkw
ODA2NmU1ZjhjNDFlZDgwMWY2MWFlOWIxMDE3ZGY0ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0
MiwxNiArMTQyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXMKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rp
b25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHkpCiB7
Ci0gICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7Ci0gICAgUmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW47Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpKSB7
Ci0gICAgICAgIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAgICByZWdpc3Ry
YWJsZURvbWFpbiA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nl
c3NQcm94eSkucmVnaXN0cmFibGVEb21haW4oKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVBy
b2Nlc3NJZGVudGlmaWVyKCksIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIHJlZ2lzdHJhYmxlRG9t
YWluIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJv
eHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50
aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgY29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJv
Y2Vzc0lkZW50aWZpZXIoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
d2ViUHJvY2Vzc1Byb3h5ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlv
blJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjA5
LDEyICsxMjAwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRTYW5kYm94RXh0ZW5z
aW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbikKLXsKLSAgICBtX3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksIFdURjo6bnVsbG9wdCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhw
bGljaXRTZXNzaW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBt
X3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IDgwZGZlNjBhMjQ4NDQzZGQ5NWQxYmU5MGE5ZjE0MWJjMWJiYzFiYzkuLjg4
ZGE3YzA0ZjY2MmM4N2FiODMzNDkyZGI4ODkwOTY3N2M0NjM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0y
MzgsOCArMjM4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwotICAgIHZvaWQgZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9u
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lk
IGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAjZW5kaWYKIAogICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRf
dCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPHVpbnQ2NF90
PiBxdW90YSk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU0YWZlNGI1
YjcxYWY2YjdkMzQ1ZjU2YjBjZjFjMTNhZGRmNjNlNWEuLmE2ZGJiN2M1YzkzNjMzYzIxNDRmZWQ5
ZGY5NjY5ZjNiZjUzYWY2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYx
LDggKzYxLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZl
ciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBleHBsaWNpdFNl
c3Npb24pCisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAjZW5kaWYKIAogICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdp
biwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJl
cXVpcmVkKSAtPiAoT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCA4YjNhNDJjZDA3MWY1NDFmMzA0ZTI1YTRhM2IwY2JkNTA0NTA1ZTkxLi5hNGJhOTJhOTA4
ZjZkYjQwZGU3ZTk5Y2QzOTFmNWFjNjZkZDFmZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzYsOSArNzYs
OSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJgogICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuYWRkKCJyZWdpc3RyYWJsZS1kb21haW4iX3MsIHJlZ2lzdHJhYmxlRG9t
YWluKCkuc3RyaW5nKCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0
YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBPcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4gaW5pdGlhbFNlc3Npb25JRCkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6
c3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1
bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwg
bV9zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgaW5pdGlhbFNlc3Npb25JRC52YWx1ZU9yKFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpIH0sIDApOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCks
IG1fc2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3Jl
LCByZWdpc3RyYWJsZURvbWFpbigpLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5oCmluZGV4IGQ4MGMxYTViMmIwMTY2ODA4OWIzNjE0MmVmOTFlM2RkMzJmYjRhYjEuLmU2
NTY3NTUxOTUzZTAzNjZlODRjMzhjYTU2ZjQ4NjQ1MTgzOWE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VX
b3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7CiAKLSAgICB2b2lk
IHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25J
RD4gaW5pdGlhbFNlc3Npb25JRCk7CisgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBlMzJlYjQzNzYzNTQwYjk2YTAxMTgzMzM4NDEyMWVmMDA5M2E1YjZiLi44MTk2NzJj
ZmE5MTVmMjliMTk4MzI0NWVjOTI2NGNiMzkzM2EwOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2Vi
UHJvY2Vzc1Byb3gKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVF9V
TlVTRUQocHJveHksICZwcm94eSA9PSBtX25ldHdvcmtQcm9jZXNzLmdldCgpKTsKIApAQCAtNzEw
LDkgKzcxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAKICAgICBtX21heUhhdmVSZWdp
c3RlcmVkU2VydmljZVdvcmtlcnMuY2xlYXIoKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdl
YnNpdGVEYXRhU3RvcmUgPSBudWxscHRyOwotICAgIGlmIChzZXNzaW9uSUQpCi0gICAgICAgIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ05vbkRlZmF1bHREYXRh
U3RvcmVGb3JTZXNzaW9uSUQoKnNlc3Npb25JRCk7CisgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vi
c2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nTm9uRGVmYXVsdERhdGFT
dG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwogCiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3Jl
KSB7CiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZjk0MzY3ZmJhOWMxZjY2ZjRiM2M5NDBkZTE2NzRi
OGRkYTZhNTdhNC4uMGE2ZDhjZWFkNTE1YTI2MWJkY2E3Y2MxNDVlYzVkYWJkMWJjNWQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zODEsNyArMzgxLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5
SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQg
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBPcHRpb25hbDxQQUw6
OlNlc3Npb25JRD4pOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29y
a2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQog
ICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wg
YWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxs
b3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYmZjNWZkNjIwMWVjZmE5YTMzNzc1
MGVkZWMyMTJlMjUzYjMyYTNjNS4uNjIzMjQzMGM1OTAyNzcyOTE4MWFkMzJmOGVlZGZlYjQxMTQw
MGNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIuZ2V0KG1ha2VP
YmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSkpOworICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9u
ID0gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmdldChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7
CiAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKICAgICAgICAgICAgIHNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyLDggKzIwMiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgYXV0byBjb25uZWN0aW9ucyA9IHN0ZDo6ZXhjaGFu
Z2UobV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLCB7IH0pOwotICAgIGZvciAoYXV0byYgY29u
bmVjdGlvbiA6IGNvbm5lY3Rpb25zLnZhbHVlcygpKQorICAgIGF1dG8gc3dDb25uZWN0aW9ucyA9
IHN0ZDo6ZXhjaGFuZ2UobV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLCB7IH0pOworICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IHN3Q29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5l
Y3Rpb24tPmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKTsKICNlbmRpZgogfQpAQCAtMjY3LDI5ICsy
NjcsMTAgQEAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3MKIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNW
YWxpZCgpKTsKLSAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5lbnN1cmUoc2Vz
c2lvbklELCBbc2Vzc2lvbklEXSB7CisgICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Np
b24uZW5zdXJlKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBbc2Vzc2lvbklEXSB7CiAgICAgICAgIHJl
dHVybiBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNyZWF0ZShzZXNzaW9uSUQpOwogICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKIH0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92
ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17
Ci0gICAgQVNTRVJUKG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllci5jb250YWlucyhjb25uZWN0
aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKLSAgICBtX3N3Q29ubmVjdGlvbnNC
eUlkZW50aWZpZXIucmVtb3ZlKGNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIo
KSk7Ci19Ci0KLVNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjppbml0aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKFdlYlNXQ2xpZW50Q29ubmVjdGlv
biYgY29ubmVjdGlvbikKLXsKLSAgICBBU1NFUlQoY29ubmVjdGlvbi5zZXNzaW9uSUQoKS5pc1Zh
bGlkKCkpOwotICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAg
ICBib29sIHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVj
dGlvbi5zZXNzaW9uSUQoKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZXBseShpZGVudGlmaWVyKSwgMCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBBU1NFUlQoIW1fc3dDb25u
ZWN0aW9uc0J5SWRlbnRpZmllci5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9zd0Nvbm5l
Y3Rpb25zQnlJZGVudGlmaWVyLmFkZChpZGVudGlmaWVyLCAmY29ubmVjdGlvbik7Ci0KLSAgICBy
ZXR1cm4gaWRlbnRpZmllcjsKLX0KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApp
bmRleCAwMDcxZGIxZjc2YjYwZjYxNTVhZTA0YTM2YjY4ZGI5NGJmMTY3MTYxLi5jMGE4YzNmNDk1
ZmVmYzM1NWZlNmViNjc4NGZkNWEwMWI1ZGFkOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApA
QCAtNzYsMTEgKzc2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgV2ViU1dDbGllbnRDb25uZWN0aW9uKiBleGlzdGluZ1NlcnZpY2VXb3JrZXJD
b25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIHsgcmV0dXJuIG1f
c3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5nZXQoc2Vzc2lvbklEKTsgfQorICAgIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbiogZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24u
Z2V0KHNlc3Npb25JRC50b1VJbnQ2NCgpKTsgfQogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYg
c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLQotICAg
IFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaW5pdGlhbGl6ZVNXQ2xpZW50
Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZVNXQ2xp
ZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTEzLDggKzExMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViU1dDbGll
bnRDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uOwotICAgIEhhc2hNYXA8V2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViU1dDbGllbnRDb25uZWN0aW9u
Kj4gbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+PiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb247CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGU3NWVlZmFkMTU0NzNhNzBhY2Vk
YmE4MjYzM2IwNTQ0NTAxYTIyYzAuLjhiYjgwNzBmYjhkOWVlMTAyNzFiOTU3ZDU0ZDhiZGM0MDFk
OTMxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaC5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUu
aCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oPgpAQCAtNTUsNzcgKzU3LDYxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9p
ZGVudGlmaWVyKG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXJUeXBlPihQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSkpCiAgICAgLCBtX3N3T3Jp
Z2luVGFibGUobWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigpKQogewogICAgIEFTU0VS
VChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVk
ZWQoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIHsgc2Vzc2lvbklEIH0pOwogfQogCiBXZWJTV0Ns
aWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24oKQogewotICAgIGlmIChtX2Nv
bm5lY3Rpb24pCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhpcyk7CisgICAg
Y2xlYXIoKTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmluaXRpYWxpemVDb25u
ZWN0aW9uSWZOZWVkZWQoKQorSVBDOjpDb25uZWN0aW9uKiBXZWJTV0NsaWVudENvbm5lY3Rpb246
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb25uZWN0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKLQotICAgIG1fY29ubmVjdGlvbiA9ICZuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpOwotICAgIG1faWRlbnRpZmllciA9IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5pbml0
aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKCp0aGlzKTsKLQotICAgIHVwZGF0ZVRocm90dGxlU3Rh
dGUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0
aW9uOjplbnN1cmVDb25uZWN0aW9uQW5kU2VuZChjb25zdCBVJiBtZXNzYWdlKQotewotICAgIGlu
aXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAg
ICAgICBzZW5kKG1lc3NhZ2UpOworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCiB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYgam9iRGF0YSkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpvYkluU2VydmVyKGpvYkRh
dGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNjaGVkdWxl
Sm9iSW5TZXJ2ZXIgeyBqb2JEYXRhIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJlc3Vs
dCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0
Y2hpbmdTY3JpcHRJblNlcnZlciB7IHJlc3VsdCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5l
Y3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkFkZFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5T
ZXJ2ZXIgeyBpZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFu
ZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVtb3ZlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkluU2VydmVyKGlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlciB7IGlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3Qg
U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllcikKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2Up
LCBzb3VyY2VJZGVudGlmaWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIH0sIDApOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNv
dXJjZUlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJv
bGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2lu
LmRhdGEoKSwgZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgdXNlckFnZW50IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0
YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNlckFn
ZW50IH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKQogewot
ICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIgeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmll
ciB9IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5yZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQgeyBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyIH0gfSk7CiB9
CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJv
bWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgZW5z
dXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uoa2V5KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSB7IGtleSB9
KTsKIH0KIAogYm9vbCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1heUhhdmVTZXJ2aWNlV29ya2Vy
UmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikgY29u
c3QKQEAgLTE3NiwyNSArMTYyLDI0IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRj
aFJlZ2lzdHJhdGlvbihTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvCiAgICAgcnVu
T3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHRvcE9yaWdpbiA9IFdURk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewog
ICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlm
aWVyOwogICAgICAgICBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzLmFkZChjYWxsYmFj
a0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxi
YWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6TWF0Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3Jp
Z2luLCBjbGllbnRVUkwpKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
Cit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fc3dPcmlnaW5UYWJsZS0+aXNJbXBv
cnRlZCgpKSB7CiAgICAgICAgIHRhc2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X3Rhc2tzUGVuZGluZ09yaWdpbkltcG9ydC5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Ci0gICAgaW5p
dGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
T3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3Vz
Q2FsbGJhY2tJZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3Mu
YWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBlbnN1cmVDb25uZWN0aW9u
QW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9u
UmVhZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFj
a0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6cmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQpAQCAtMjE2LDI5
ICsyMDEsMzIgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMo
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24KICAgICBydW5PckRlbGF5VGFza0Zv
ckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0g
V1RGTW92ZSh0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAg
IG1fb25nb2luZ0dldFJlZ2lzdHJhdGlvbnNUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6R2V0UmVnaXN0cmF0aW9ucyB7IGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJM
IH0pOwogICAgIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRj
aChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIg
fSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNo
IHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwg
cmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJv
ZHkoKSB9LCByZWZlcnJlciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNh
bmNlbEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRl
bnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZSB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50
aWZpZXIgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250
aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewotICAgIG1fY29ubmVjdGlvbiA9IG51
bGxwdHI7CisgICAgY2xlYXIoKTsKK30KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNs
ZWFyKCkKK3sKICAgICBhdXRvIHJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdN
YXRjaFJlZ2lzdHJhdGlvblRhc2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0
cmF0aW9uVGFza3MudmFsdWVzKCkpCiAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CkBA
IC0yNDcsMzEgKzIzNSwyNiBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlv
blRvU2VydmVyTG9zdCgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGdldFJlZ2lzdHJhdGlv
blRhc2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayh7IH0pOwogCisgICAgYXV0byByZWdp
c3RyYXRpb25SZWFkeVRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRh
c2tzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uUmVhZHlUYXNrcy52
YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKwogICAgIGNsZWFyUGVuZGluZ0pvYnMo
KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBpbml0aWFsaXplQ29u
bmVjdGlvbklmTmVlZGVkKCk7Ci0KLSAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChpZGVudGlmaWVyKSwgTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGll
bnQ6OlJlcGx5KCkpOwotfQotCi1XZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25z
dAotewotICAgIGNvbnN0X2Nhc3Q8V2ViU1dDbGllbnRDb25uZWN0aW9uKj4odGhpcyktPmluaXRp
YWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVX
b3JrZXJGcm9tQ2xpZW50IHsgaWRlbnRpZmllciB9LCBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudDo6UmVwbHkoKSk7CiB9CiAKIHZv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKIHsKICAgICBt
X2lzVGhyb3R0bGVhYmxlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXJlQWxsUGFnZXNUaHJv
dHRsZWFibGUoKTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgbV9pc1Rocm90dGxlYWJsZSB9KTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNldFRocm90dGxlU3Rh
dGUgeyBtX2lzVGhyb3R0bGVhYmxlIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6c3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgp
OwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpTdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2sgeyB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmgKaW5kZXggM2FmNDk1ZGNhOTQ0ZGVkYzkxZjU0M2NiZGQ2MTMxYjcwMzll
YjkyMy4uZWZlZjM2YmNhY2QyODU0NTdiZTAxNGY4ZDRjYmM5ZGE2OTljMmY4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU1dD
bGllbnRDb25uZWN0aW9uPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7IHNlc3Npb25JRCB9KTsgfQog
ICAgIH5XZWJTV0NsaWVudENvbm5lY3Rpb24oKTsKIAotICAgIFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5h
bDsKKyAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAK
ICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwpAQCAtNzQsOCArNzQsNiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlNXQ2xpZW50Q29ubmVjdGlvbihQQUw6OlNlc3Np
b25JRCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLQogICAg
IHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9i
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKICAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNl
KSBmaW5hbDsKQEAgLTk3LDI3ICs5NSwyNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVs
ZVN0b3JhZ2VKb2IoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKTsKIAotICAg
IHZvaWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFz
ayk7CisgICAgdm9pZCBydW5PckRlbGF5VGFza0ZvckltcG9ydChGdW5jdGlvbjx2b2lkKCk+JiYg
dGFzayk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAgdWludDY0X3Qg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50
aWZpZXIudG9VSW50NjQoKTsgfQorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0K
IAogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1v
cnk6OkhhbmRsZSYpOwogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZUlzSW1wb3J0ZWQoKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoY29u
c3QgVSYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CiAgICAgVW5pcXVlUmVmPFdlYlNXT3JpZ2luVGFibGU+IG1fc3dPcmlnaW5UYWJsZTsKIAogICAg
IHVpbnQ2NF90IG1fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXIgeyAwIH07CiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2s+IG1fb25nb2luZ01hdGNoUmVnaXN0cmF0
aW9uVGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNr
PiBtX29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
V2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2s+IG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5
VGFza3M7Ci0gICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09y
aWdpbkltcG9ydDsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09y
aWdpbkltcG9ydDsKICAgICBib29sIG1faXNUaHJvdHRsZWFibGUgeyB0cnVlIH07CiB9OyAvLyBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCmluZGV4IGM5MjU3YWI3NWNjYTAwZWYwOTI0MGZkZTc4YzUxMjg2ZDgwYzcxY2UuLjEw
MmQ0NTcwZWRmNDU2YmIzOTAzZjA2YzZmNzY5NWJjMjdjYjAxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTg2LDggKzg2LDkgQEAgUmVmPERvY3VtZW50TG9hZGVy
PiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFIKICAgICByZXR1cm4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJz
dGl0dXRlRGF0YSk7CiB9CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlKQorV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgdWludDY0X3QgcGFnZUdyb3VwSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX3JlZ2lzdHJh
YmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQogICAgICwgbV9wYWdlR3JvdXBJ
RChwYWdlR3JvdXBJRCkKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCiAg
ICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC05OCw2ICs5OSw3IEBAIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uCiAjZW5kaWYKIHsKICAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0b3JlKTsKKyAg
ICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fcmVn
aXN0cmFibGVEb21haW4gfSwgMCk7CiB9CiAKIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojp+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CkBAIC0yNTksOSAr
MjYxLDkgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0
ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcgogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRp
b25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBt
ZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJ
ZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKIH0K
IAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChP
cHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3
YXNTdWNjZXNzZnVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMTZjYzBk
ZWU3NTg4NDBjYzgyYzRjNDI4ZGI0MzhjNDJiZjljM2NiZi4uYjVhMmM2OGFlMjAxZTVhYjcyM2M2
MzAzMzMzMTk5ZjFlNTJiZTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBA
IC01Myw3ICs1Myw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRl
eHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVi
bGljOgotICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOwogICAgIH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCiAgICAgLy8gV2ViQ29yZTo6
U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbi4KLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoT3B0aW9uYWw8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0
aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNl
dFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sKSBmaW5hbDsKQEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAKICAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CiAgICAgdWludDY0X3QgbV9wYWdl
R3JvdXBJRDsKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjRhZTEyMGY5Yjg5NjZhYzMwM2M1NWQ5NDc5MzQ5ODA3
N2I2ZDhjMC4uMTcwMzBlOWUyOWJjZjNjMzBlZGY2ODk1ZDQ3MzVmMWVlNmViMmFhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTgxOCwxMyArMTgxOCwxMyBA
QCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBp
bml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAgICAgLy8g
V2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxs
IGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MK
ICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250
ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rp
b24gYXMgdGhlCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6
YXRpb24gcHVycG9zZXMuCiAgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFn
ZUlELCBzdG9yZSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5l
Y3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVj
dGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJv
eHlJRCwgcGFnZUlELCBzdG9yZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggZWMwZmJlMjJiOWUzM2ZhOTA5NWZlNGE1YjI2M2RiMDEyY2UwODI0OS4uYmU3MTMwMTU4ODQw
NzhiMzg0NWRhMmJjMTljMjkwNTRlMzcyNGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0zNjUsNyArMzY1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7
CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBk
Y2VlMWY0NzRjNWE2Y2Y2MTlhMWI4NmQyODU0MDBiMDVkZGUzODUzLi5mNDQ5ZjVmNDk3NjI5MmNk
ZjA2YjU4MWU4MWMyYjQ3YjQxOTEyMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlh
bFNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1
Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiAgICAgUmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378064</attachid>
            <date>2019-09-05 02:03:44 -0700</date>
            <delta_ts>2019-09-05 02:21:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190905110342.patch</filename>
            <type>text/plain</type>
            <size>84797</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I3YmFlM2MwYjZhOGE1
NThlOTY0NGY3ODQ3MzZhZmViNDEwMmNlZS4uODY3NjE3NmQ1YWFiZDdmOTBmMWY5MzJhMTMwZGRm
Nzk1Y2Q3ZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92aW5nIFNX
IHRvIHByb2Nlc3NJZGVudGlmaWVyIC0gYWxtb3N0IHdvcmtpbmcgYnV0IHNlc3Npb24gSURzCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lv
bklEIHRvIGVhc2UgTmV0d29ya1Byb2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2Vz
cyBjb25uZWN0aW9uLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIExl
dCBjb25uZWN0aW9uIGlkZW50aWZpZXIgYmUgc2V0IGluIGNvbnN0cnVjdG9yIGluc3RlYWQgb2Yg
Z2VuZXJhdGVkLgorCiAyMDE5LTA5LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnRyb2R1Y2UgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uIHRvIG1ha2Ug
U1dDbGllbnRDb25uZWN0aW9uIG1vbm8tdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlNjgzMjIxNjAxNzFi
Zjg3NWRiNjYxZTQzZGQ2NzRiOGRmZTZjNmIuLjA2MzlkMDMzYzZlMmZmMjdhMmYxNDgxNGM5OTIw
ODNhYmVkYzk3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTExIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gYmUgc3RvcmVkIGluIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzCisgICAgICAgIFRoZXkgYXJlIG5vdyBrZXllZCBieSBzZXNzaW9uIElEcyBoZW5jZSB3aHkg
V2ViU1dDbGllbnRDb25uZWN0aW9uIGlzIHVzaW5nIHRoZSBzZXNzaW9uIElEIGFzIG1lc3NhZ2Ug
Y29ubmVjdGlvbiBJRC4KKyAgICAgICAgQ3JlYXRpb24gbm8gbG9uZ2VyIHJlcXVpcmVzIGEgc3lu
YyBJUEMgc2luY2UgdGhlIGNvbm5lY3Rpb24gaXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSBhIHNl
c3Npb24gSUQgYW5kIGEgcHJvY2VzcyBJRC4KKyAgICAgICAgVGhlc2UgSURzIGFyZSBzdGFibGUg
b3ZlciBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdpdGhpbiBOZXR3b3JrUHJvY2Vz
cywgYSBzZXJ2ZXIgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIGJ5IGEgU1dTZXJ2ZXIgd2hpY2ggaXMg
c2Vzc2lvbiBJRCBzcGVjaWZpYy4KKyAgICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgcHJvY2VzcyBp
ZGVudGlmaWVyIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAg
TW92ZSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gYmUgb3duZWQgYnkgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgaXQgYXQg
dGltZSBjb25uZWN0aW9uIHRvIHdlYnByb2Nlc3MgaXMgY3JlYXRlZCwgdXNlIGEgZGVkaWNhdGVk
IElQQyBtZXNzYWdlLgorICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uIG9uY2UgV2ViUHJvY2VzcyBhc2tzIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAgVGhpcyB3
aWxsIGFsbG93IGV4aXN0aW5nIFdlYlByb2Nlc3MgdG8gcnVuIHNlcnZpY2Ugd29ya2Vycy4KKyAg
ICAgICAgQSBtYXAgaXMgc3RpbGwga2VwdCBpbiBOZXR3b3JrIFByb2Nlc3MgdG8gcmV1c2UgY29u
dGV4dCBjb25uZWN0aW9ucyBzaW5jZSB0aGVzZSBjb25uZWN0aW9ucyBhcmUgbm90IHNlc3Npb25J
RCBzcGVjaWZpYy4KKworICAgICAgICBNaWdyYXRlIGZyb20gYSBzaW5nbGUgYm9vbGVhbiB0byBh
IEhhc2hTZXQgdG8gdHJhY2sgd2hldGhlciBzb21lIGNvbm5lY3Rpb25zIGFyZSBpbiB0aGUgcHJv
Y2VzcyBvZiBiZWluZyBjcmVhdGVkLgorICAgICAgICBQcmV2aW91c2x5IGlmIHR3byByZXF1ZXN0
cyB0byBjcmVhdGUgY29ubmVjdGlvbnMgd2VyZSBkb25lIHNob3J0bHkgb25lIGFmdGVyIHRoZSBv
dGhlciBvbiBkaWZmZXJlbnQgcmVnaXN0cmFibGUKKyAgICAgICAgZG9tYWlucywgdGhlIHNlY29u
ZCByZXF1ZXN0IHdvdWxkIG5vdCBiZSBwcm9jZXNzZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zm9yRWFj
aFNXU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJT
V1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dW5y
ZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JT
ZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZXhp
c3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6fldlYlNXQ2xpZW50Q29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnNjaGVkdWxlSm9iSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVtb3ZlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0Ns
aWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29u
bmVjdGlvblRvU2VydmVyTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5
bmNUZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246OnVwZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENv
bm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJBZ2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisKIDIwMTktMDktMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9iaWxlU2FmYXJpIG1heSBjcmFzaCB3aGVuIGludm9raW5nIHRoZSBDKysgbGFt
YmRhIGluIC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRl
eCA3MzkxYzRjMjFhMzZkNTBkNzdmMjA2ZDdiM2VlYmQwNWIwNjQwNGUwLi43NjBjNGNkMGEzYzZl
ZWQ3NWU4YTg2ODY2MmU5NWM0OTA1OTAxNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC05OSw5ICs5OSw5
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyBtZXNzYWdlID0geyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcG9ydHNPckV4
Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgIGF1dG8gc291cmNlSWRlbnRpZmll
ciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCku
aWRlbnRpZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW21lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50
aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRleHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgp
IG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IGNvbnRleHQuc2Vz
c2lvbklEKCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZp
ZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRl
eHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSkKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRp
Zmllciwgc291cmNlT3JpZ2luKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBt
ZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogICAgIH0pOwogCiAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmZTBjMDg0OTJjMzUyMTdhMjM2ZTIz
MmMwNmJjNWFiNjM2Nzg4NmExLi5mZmZiNzExZGUwYjJmZGZiN2RhYTkxZDk2MGU0NGEzYTlmOTEw
M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtl
clN0YXJ0ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChPcHRpb25hbDxTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0YWxs
KE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggOTMyNmEzYmFjNjU5
YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMC4uOWNkOGRlMGQwNzM1NzNkNWU4NTNjMzc5OTRi
YWM1MzU1ZTk5MjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgU2Vjb25kcyB0ZXJtaW5hdGlvbkRlbGF5IHsgMTBfcyB9OwogCi1TV1NlcnZl
cjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyKQorU1dTZXJ2ZXI6OkNv
bm5lY3Rpb246OkNvbm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZlciwgSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9pZGVudGlmaWVyKFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCmluZGV4IDBjNTdhMzU3ZWZlM2VjYjRmNDE5N2NjOTFmMDg3MDIyMGI2
NjcwMGQuLmIzOTRlYmYzYTY1YWIxMDkwYmZhZDgyZTFlZDQ4ZDYwZTRiOTJmMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTU2
LDYgKzU2LDcgQEAgY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFz
cyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBT
ZXJ2aWNlV29ya2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0OwpAQCAtODYsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNv
bnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBjb25z
dCBTZXJ2aWNlV29ya2VyRGF0YSYgbmV3Q29udHJvbGxlcikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mKSA9IDA7CiAKQEAgLTkzLDcgKzk1LDcgQEAgcHVibGljOgogICAgICAg
ICBjb25zdCBTV1NlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29ubmVjdGlv
bihTV1NlcnZlciYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVy
JiwgSWRlbnRpZmllcik7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGFjM2EyMWExZDQ3OGU2NWIyNDFmNjUzODMzYjU5YjlmZjQ1M2Q0
MTEuLjQ3MGY3OTA5YWFiMTVjNTc0YWJkNGI3YTY2MTE1NjdiNGViNzZiODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yMTQsMjEgKzIxNCwyMiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3RpbwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlv
biA9IG1fc3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAg
IGlmIChhdXRvKiBzd0Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnMuZ2V0KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkKICAgICAgICAgICAgIHN3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25U
b0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKLSAgICAgICAg
ICAgIGNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgQVNTRVJUKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIGlm
IChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVj
dGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBt
X25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0
aW9uKGNvbm5lY3Rpb24pKSB7Ci0gICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZUZldGNoVGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIEFTU0VS
VChtX3N3Q29udGV4dENvbm5lY3Rpb24pOworICAgICAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0
aW9uKSB7CisgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVGZXRj
aFRhc2tNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjY5LDcgKzI3MCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byBzd0Nvbm5lY3Rpb24gPSBtX3N3
Q29ubmVjdGlvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpZiAoYXV0
byogc3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpCiAgICAgICAgICAgICBzd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0y
ODYsMTAgKzI4NywxOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoUmVmUHRyPFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0
d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24o
Y29ubmVjdGlvbikpIHsKLSAgICAgICAgLy8gU2VydmljZSBXb3JrZXIgcHJvY2VzcyBleGl0ZWQu
Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2Fz
Q2xvc2VkKHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGF1
dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9zd0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJs
ZURvbWFpbigpOworCisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNs
b3NlZCgpOworCisgICAgICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7Cisg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0oYXV0byYgc2VydmVy
KSB7CisgICAgICAgICAgICBzZXJ2ZXIubWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFp
bkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICBpZiAoc2VydmVy
Lm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgICAgICBzZXNzaW9uSUQgPSBzZXJ2ZXIuc2Vzc2lv
bklEKCk7CisgICAgICAgIH0pOworICAgICAgICBpZiAoc2Vzc2lvbklEKQorICAgICAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3Ry
YWJsZURvbWFpbiwgKnNlc3Npb25JRCk7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7CkBAIC04NzgsMTggKzg4OCwyMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0aW9ucygpCiAgICAgfQogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGF1dG8mIHNlcnZlciA9
IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGF1
dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdv
cmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKLSAgICAK
LSAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyID0gY29ubmVjdGlvbi0+aWRlbnRpZmllcigpOwotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlv
biAtICVzIiwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwg
bV93ZWJQcm9jZXNzSWRlbnRpZmllciwgc2Vzc2lvbklEKTsKIAotICAgIEFTU0VSVCghbV9zd0Nv
bm5lY3Rpb25zLmNvbnRhaW5zKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSk7Ci0gICAgbV9z
d0Nvbm5lY3Rpb25zLmFkZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbWFrZVdlYWtQdHIo
KmNvbm5lY3Rpb24pKTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNz
aW9uSUQudG9VSW50NjQoKSkpOworICAgIG1fc3dDb25uZWN0aW9ucy5hZGQoc2Vzc2lvbklELnRv
VUludDY0KCksIG1ha2VXZWFrUHRyKCpjb25uZWN0aW9uKSk7CiAgICAgc2VydmVyLmFkZENvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgbV9zd0NvbnRleHRDb25uZWN0aW9u
ID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUobV9uZXR3b3JrUHJvY2Vz
cywgcmVnaXN0cmFibGVEb21haW4sIG1fY29ubmVjdGlvbi5nZXQoKSk7CisKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikgeworICAgICAgICBz
ZXJ2ZXIuc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKm1fc3dDb250ZXh0Q29ubmVj
dGlvbik7CisgICAgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IDQyYzE3ZTFiMDViNDA2YjM5NGM5NTRhYjc5YzJhMzg2NDk5MjQxMzQuLmU4YTU2ZmQ3ZTJkMWQ1
MWU4MzkwMjc1NzkyNmM3ZjlhNTQ5MGZlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAg
LTY4LDYgKzY4LDcgQEAgY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiBjbGFzcyBOZXR3b3Jr
U29ja2V0U3RyZWFtOwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OwogY2xhc3MgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OwogdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogCiBuYW1lc3BhY2Ug
TmV0d29ya0NhY2hlIHsKQEAgLTIwOCw3ICsyMDksOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciYmKT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoU1dDb250
ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CiAjZW5kaWYKIApAQCAtMzE5LDcgKzMyMSw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFw
PFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdl
YWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIFJlZlB0
cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmZDA5MmYzMTQ3OTMyNTRjNGZiNTQ3
OThmYjdlNzA2MDdlMzZiNjcxLi43NzdhZGZiN2NiNDlkN2U2YWNiMTI2NzVmNGMxYWNmMjk1Yzlm
NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgx
LDcgKzgxLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9u
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKICNlbmRpZgogCiAgICAgQ3JlYXRl
TmV3TWVzc2FnZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXIgcG9ydDEsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4
IDE0MzdkMWFlMWNkM2VmZTA5MWJkNGQ1MDgzNGUyNDAyMzJiNTEyOTEuLjE4NzI2ZjZlM2RiY2Jm
MDRlZDM4MjJkMGI4ZjM3YmM4ZTRjMTQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMTUsMTcgKzIxNSw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewot
ICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgp
KTsKLSAgICAgICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhdXRvKiB3ZWJTV0Nvbm5lY3Rp
b24gPSBjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rp
b24pKSB7Ci0gICAgICAgICAgICB3ZWJTV0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
fQotI2VuZGlmCiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKIH0KIApAQCAtNDE0LDcgKzQwMyw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50
Pj4KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBjcmVhdGVJUEND
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CiAgICAgaWYgKCFpcGNDb25uZWN0aW9uKSB7CkBAIC00
MzEsMjQgKzQyMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShpcGNDb25uZWN0aW9uLT5zZWNvbmQpKTsKIAogICAgIGNvbm5lY3Rpb24u
c2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgp
KTsKLSAgICAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGlzU2VydmljZVdv
cmtlclByb2Nlc3MpIHsKLSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0Nv
bnRleHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24g
PSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFi
bGVEb21haW4sIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKLSAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAgICAgICBtX3dhaXRp
bmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOwotCi0gICAgICAg
IGZvciAoYXV0byogc2VydmVyIDogU1dTZXJ2ZXI6OmFsbFNlcnZlcnMoKSkKLSAgICAgICAgICAg
IHNlcnZlci0+c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rp
b24pOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nl
c3MpOwotICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7Ci0jZW5kaWYKIAogICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpOwogfQpAQCAtMjM5MCwzNiArMjM2MSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRT
YW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZQog
I2VuZGlmIC8vIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNz
Ojpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gOiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnZhbHVlcygpKSB7Ci0gICAgICAg
IGlmIChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5l
Y3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5nZXQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKLXsKLSAgICBhdXRv
JiByZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnJlZ2lzdHJh
YmxlRG9tYWluKCk7Ci0gICAgCi0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVj
dGlvbkNsb3NlZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1Nl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lz
dHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBp
ZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJD
b25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3Rp
bGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwotICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXVEY6Om51bGxvcHQpOwotICAgIH0KLX0K
LQotYm9vbCBOZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9y
UmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKSBjb25zdAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Zm9yRWFjaFNXU2VydmVyKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoU1dTZXJ2ZXImKT4mIGNhbGxiYWNrKQogewotICAgIHJldHVybiBXVEY6OmFu
eU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAg
cmV0dXJuIHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soKnNlcnZlcik7
CiB9CiAKIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTI0NDcsNDAgKzIzOTIsMzYgQEAgV2ViU1dPcmlnaW5T
dG9yZSogTmV0d29ya1Byb2Nlc3M6OmV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PFdlYlNXT3JpZ2luU3RvcmUmPihz
d1NlcnZlci0+b3JpZ2luU3RvcmUoKSk7CiB9CiAKK2Jvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICByZXR1cm4gV1RG
OjphbnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7CisgICAg
ICAgIHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0pOworfQorCiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluKQogewogICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25zLmdldChyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNy
ZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKLSAgICBpZiAobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24pCisgICAgaWYgKG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lz
dHJhYmxlRG9tYWluKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fd2FpdGluZ0ZvclNl
cnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKLSAgICBpZiAoc2Vzc2lvbklE
KQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24ocmVnaXN0cmFibGVEb21haW4sICpzZXNzaW9uSUQp
LCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwotfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQotewotICAgIGlmIChh
dXRvIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGRlc3RpbmF0aW9uSWRl
bnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24t
PnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5j
b250ZXh0SWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291
cmNlT3JpZ2luKTsKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFi
bGVEb21haW4pOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNs
aWVudElkZW50aWZpZXImIHNvdXJjZSwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBpZiAoYXV0byBjb25u
ZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWRlbnRpZmllcikp
Ci0gICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKGRlc3RpbmF0
aW9uLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2UpOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9u
ID0gc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY29ubmVjdGlvbihkZXN0aW5hdGlvbklk
ZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9u
LT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIu
Y29udGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNv
dXJjZU9yaWdpbik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NF
UlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICBBU1NF
UlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIo
KSkpOwotICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbi5pZGVudGlmaWVy
KCksIG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKTsKICAgICBhdXRvKiBzdG9yZSA9IGV4aXN0aW5n
U1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSk7CiAgICAgQVNT
RVJUKHN0b3JlKTsKICAgICBpZiAoc3RvcmUpCkBAIC0yNDg5LDI2ICsyNDMwLDIxIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29u
bmVjdGlvbiYgY29ubmVjdGlvCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAg
IEFTU0VSVChtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigp
KS5nZXQoKSA9PSAmY29ubmVjdGlvbik7Ci0gICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLnJlbW92
ZShjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGF1dG8qIHN0b3JlID0gZXhpc3Rp
bmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihjb25uZWN0aW9uLnNlc3Npb25JRCgpKSkKICAgICAg
ICAgc3RvcmUtPnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVl
ZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byYg
cmVnaXN0cmFibGVEb21haW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxl
RG9tYWluKCk7Ci0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlz
IG5vIGxvbmdlciBuZWVkZWQsIHRlcm1pbmF0aW5nIGl0Iik7Ci0gICAgc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDog
bV9zd1NlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zv
clJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAK
LSAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBt
X3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgQVNTRVJUKCFtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rp
b24ucmVnaXN0cmFibGVEb21haW4oKSkpOworICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5z
LnJlbW92ZShjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIG1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNv
bm5lY3Rpb24pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7
CisgICAgQVNTRVJUKG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKSkgPT0gJmNvbm5lY3Rpb24pOworICAgIG1fc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDA5MGQ0N2YwMWFkMmRjZWQ0OTlhYmU4OTdmNzBiOWE0Y2U5MDdjM2EuLjlk
ODg2ZmQ4NDJiYWUwZmFhOWJkODhmMzU1MjcwNmVmZDhmZjZlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMwMCwxNiArMzAwLDE3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIHZvaWQgY3Jl
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgUEFM
OjpTZXNzaW9uSUQpOwogICAgIAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNl
c3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rp
b24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIAotICAgIHZvaWQgc3dDb250
ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7Ci0gICAgCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25u
ZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYp
OwotICAgIHZvaWQgY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoUmVmPFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4mJik7CisgICAgdm9pZCByZWdpc3RlclNXQ29udGV4
dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKKworICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAg
ICB2b2lkIGZvckVhY2hTV1NlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNXU2Vy
dmVyJik+Jik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zOTUsNyAr
Mzk2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwot
ICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0
dGFjaG1lbnQ+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2
b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBA
IC00NjQsMTMgKzQ2NSwxMiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJ
UEM6OkF0dGFjaG1lbnQmKTsKICAgICAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3Jl
OjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
T3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIpOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICAKICAgICB2b2lkIGRpc2FibGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKICAgICAKICAgICBXZWJTV09yaWdp
blN0b3JlKiBleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBj
b25zdDsKLSAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAg
ICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmIHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOwogI2VuZGlmCkBAIC01NDAsMTIgKzU0MCwxMSBAQCBwcml2YXRlOgogICAgIExv
Y2sgbV9zdG9yYWdlVGFza011dGV4OwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBSZWZQdHI8V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKLSAg
ICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFs
c2UgfTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qPiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOwogICAg
IGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
IHsgZmFsc2UgfTsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1fc3dEYXRh
YmFzZVBhdGhzOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTV1NlcnZlcj4+IG1fc3dTZXJ2ZXJzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+
PiBtX3N3U2VydmVyQ29ubmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYmYyMWEyZGM3YmFkYWY2MjAzOTVjZDA1YzYx
ZWQyNDEyMjkzMmY5ZC4uYWIzYmFiYjQ4NGU4N2ZiMzMzNzNkOWE4OTZjMjUxMmQxOTY1MWQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0
IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRp
b24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgYm9vbCBp
c1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3Ry
YWJsZURvbWFpbikgLT4gKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50
aWZpZXIpIEFzeW5jCisgICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpIC0+IChPcHRpb25hbDxJ
UEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYwogCiAjaWYgVVNFKFNP
VVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQpAQCAtMTUz
LDEwICsxNTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgU2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3RvcnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGhhbmRsZSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgUG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCi0KLSAgICBQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3Nh
Z2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlLCBXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQot
CisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRp
ZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5KCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCmluZGV4IDZiY2I5OWExMDBmODZiNjk5Yzc3MTVkNWI1ZjQ0ZjhlYWY2ODVm
YmEuLjkzYmY1MTk4NzY3NjFmMDczMDFmNGIwYmYyMjRlNzY3YWU0YThkNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC02MSw4ICs2MSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogI2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFNXU0VSVkVSQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19F
UlJPUl9JRihtX3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdv
cmtlciwgIiVwIC0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKIAotV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0
d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBTV1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBTV1NlcnZlcjo6
Q29ubmVjdGlvbihzZXJ2ZXIpCitXZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29u
bmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFNXU2VydmVyJiBzZXJ2ZXIs
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIsIFNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgOiBTV1NlcnZlcjo6Q29ubmVjdGlv
bihzZXJ2ZXIsIG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXJUeXBlPihwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKSkKICAgICAsIG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKICAgICAsIG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAs
IG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCkBAIC0yNTMsMTMgKzI1MywxMyBAQCB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihTZXJ2aWNlV29y
a2VySm9iRGF0YSYmIGpvYkRhdGEpCiAgICAgc2VydmVyKCkuc2NoZWR1bGVKb2IoV1RGTW92ZShq
b2JEYXRhKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0
SWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwg
Y29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewog
ICAgIGF1dG8qIHNvdXJjZVNlcnZpY2VXb3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIGlmICghc291cmNlU2VydmljZVdvcmtlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpQb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudCB7IGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIs
IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZVNlcnZpY2VXb3JrZXItPmRhdGEoKSwgc291cmNlT3Jp
Z2luIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVy
LCBtZXNzYWdlLCBzb3VyY2VTZXJ2aWNlV29ya2VyLT5kYXRhKCksIHNvdXJjZU9yaWdpbiB9KTsK
IH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2
NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCA5MDAyM2Q2NjE4NGZkMmQxODcxZDQ0ODk2MTdhMGY5
ZjY3MmEwMjhiLi5hZGU4ZTdlM2E2MzBjNjE1MGI5MWFhOWFiMjAzMDY2NTU2OWM3NzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+CiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01
Myw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBXZWJTV1NlcnZlckNv
bm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dT
ZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCk7CisgICAgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBJUEM6OkNv
bm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihjb25zdCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mKSA9
IGRlbGV0ZTsKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKQEAgLTY0LDkg
KzY1LDYgQEAgcHVibGljOgogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4
dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKTsKLQogcHJpdmF0ZToKICAgICAvLyBJbXBs
ZW1lbnQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJv
Y2VzcykKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJK
b2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CkBAIC05
NCw2ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOwogICAg
IHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXImJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAorICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNl
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5h
bDsKKwogICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViQ29yZTo6
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJikgZmluYWw7CiAKICAgICBib29sIGlzVGhyb3R0
bGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlYWJsZTsgfQpAQCAtMTAyLDggKzEw
MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0
bGVhYmxlKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAorICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7CisKICAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsgfQotICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaWRlbnRpZmllcigpLnRv
VUludDY0KCk7IH0KKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0KICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCBzZW5kVG9Db250ZXh0UHJvY2VzcyhXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBVJiYgbWVzc2FnZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXgg
YmZlNDAzZGY1ZWJhMjg5NDY5NzU3YzMwNDgxODE0ZGU2YjVhNzMzMC4uN2IxZTkyMDcxMDljZDE0
NTA3NmI5YWE3MjAwOTk1MTE5ZjM4YmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw5ICs0NiwxMyBAQCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihOZXR3b3JrUHJvY2VzcyYgbgogICAgICwgbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogeworICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CiB9CiAK
LVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbigpID0gZGVmYXVsdDsKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQogCiBJUEM6OkNvbm5lY3Rp
b24qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdAogewpAQCAtNjUsNiArNzEsMTIgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQogICAgICAgICBmZXRjaC0+ZmFpbChSZXNv
dXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBX
b3JrZXIgY29udGV4dCBjbG9zZWQiX3MgfSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0
aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdl
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbikKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fbmV0d29ya1By
b2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvbm5lY3Rpb24oZGVzdGluYXRp
b25JZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlm
aWVyLmNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VP
cmlnaW4pOworfQorCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFs
bFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0
YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFs
bFNlcnZpY2VXb3JrZXIgeyBkYXRhLCBzZXNzaW9uSUQsIHVzZXJBZ2VudCB9KTsKQEAgLTExNyw3
ICsxMjksMTcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlz
aFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpCiB7Ci0gICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQo
KnRoaXMpOworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzLT5uZWVkc1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29y
a2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVybWluYXRpbmcgaXQiKTsKKyAgICB0
ZXJtaW5hdGUoKTsKKworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0o
YXV0byYgc2VydmVyKSB7CisgICAgICAgIHNlcnZlci5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJh
YmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIH0pOworCisg
ICAgY29ubmVjdGlvbkNsb3NlZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDkwYTA3ZWEy
NGJiYWQzMzc1NjdhNGJlYTM3MjI1ZjM4MjIxMWFhNWIuLjIwZWMxNWU2YmY5OWY4ZWQ2OTJkMGJj
MmI5ZDJkYTVkMGU3ZjhjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RydWN0IEZldGNoT3B0aW9uczsKK3N0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtODIsNiArODMsOCBAQCBwcml2YXRlOgog
ICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5h
bDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFs
OwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9z
dCBXZWJQcm9jZXNzCiAgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KSBmaW5hbDsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5k
ZXggOTk0OWUzZDQzNWYyNDdiNTBiZmQ0NDRkNTA2ZGUyYTk1MjdkYzUyZC4uZTMxNThmYzkwYjM1
NzRlNGI4NjBiZDI0MWMyN2ExYjA0MjZlYjgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zNiw2
ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiB7CiAg
ICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENs
YWltKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBTZXRTY3JpcHRSZXNv
dXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2Ny
aXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSk7
CisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVz
dGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdl
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VP
cmlnaW4pCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA0NDkwMWE4YzM4N2I3ODAwNTA5ODdmOWRiMTY1ZjY0NDBmMmIxNDBiLi41MWIzZTkw
ODA2NmU1ZjhjNDFlZDgwMWY2MWFlOWIxMDE3ZGY0ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0
MiwxNiArMTQyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXMKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rp
b25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHkpCiB7
Ci0gICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7Ci0gICAgUmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW47Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpKSB7
Ci0gICAgICAgIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAgICByZWdpc3Ry
YWJsZURvbWFpbiA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nl
c3NQcm94eSkucmVnaXN0cmFibGVEb21haW4oKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVBy
b2Nlc3NJZGVudGlmaWVyKCksIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIHJlZ2lzdHJhYmxlRG9t
YWluIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJv
eHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50
aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgY29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJv
Y2Vzc0lkZW50aWZpZXIoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
d2ViUHJvY2Vzc1Byb3h5ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlv
blJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjA5
LDEyICsxMjAwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRTYW5kYm94RXh0ZW5z
aW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbikKLXsKLSAgICBtX3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksIFdURjo6bnVsbG9wdCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhw
bGljaXRTZXNzaW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBt
X3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IDgwZGZlNjBhMjQ4NDQzZGQ5NWQxYmU5MGE5ZjE0MWJjMWJiYzFiYzkuLjg4
ZGE3YzA0ZjY2MmM4N2FiODMzNDkyZGI4ODkwOTY3N2M0NjM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0y
MzgsOCArMjM4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwotICAgIHZvaWQgZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9u
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lk
IGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAjZW5kaWYKIAogICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRf
dCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPHVpbnQ2NF90
PiBxdW90YSk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU0YWZlNGI1
YjcxYWY2YjdkMzQ1ZjU2YjBjZjFjMTNhZGRmNjNlNWEuLmE2ZGJiN2M1YzkzNjMzYzIxNDRmZWQ5
ZGY5NjY5ZjNiZjUzYWY2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYx
LDggKzYxLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZl
ciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBleHBsaWNpdFNl
c3Npb24pCisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAjZW5kaWYKIAogICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdp
biwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJl
cXVpcmVkKSAtPiAoT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCA4YjNhNDJjZDA3MWY1NDFmMzA0ZTI1YTRhM2IwY2JkNTA0NTA1ZTkxLi5hNGJhOTJhOTA4
ZjZkYjQwZGU3ZTk5Y2QzOTFmNWFjNjZkZDFmZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzYsOSArNzYs
OSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJgogICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuYWRkKCJyZWdpc3RyYWJsZS1kb21haW4iX3MsIHJlZ2lzdHJhYmxlRG9t
YWluKCkuc3RyaW5nKCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0
YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBPcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4gaW5pdGlhbFNlc3Npb25JRCkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6
c3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1
bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwg
bV9zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgaW5pdGlhbFNlc3Npb25JRC52YWx1ZU9yKFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpIH0sIDApOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCks
IG1fc2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3Jl
LCByZWdpc3RyYWJsZURvbWFpbigpLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5oCmluZGV4IGQ4MGMxYTViMmIwMTY2ODA4OWIzNjE0MmVmOTFlM2RkMzJmYjRhYjEuLmU2
NTY3NTUxOTUzZTAzNjZlODRjMzhjYTU2ZjQ4NjQ1MTgzOWE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VX
b3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7CiAKLSAgICB2b2lk
IHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25J
RD4gaW5pdGlhbFNlc3Npb25JRCk7CisgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBlMzJlYjQzNzYzNTQwYjk2YTAxMTgzMzM4NDEyMWVmMDA5M2E1YjZiLi44MTk2NzJj
ZmE5MTVmMjliMTk4MzI0NWVjOTI2NGNiMzkzM2EwOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2Vi
UHJvY2Vzc1Byb3gKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVF9V
TlVTRUQocHJveHksICZwcm94eSA9PSBtX25ldHdvcmtQcm9jZXNzLmdldCgpKTsKIApAQCAtNzEw
LDkgKzcxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAKICAgICBtX21heUhhdmVSZWdp
c3RlcmVkU2VydmljZVdvcmtlcnMuY2xlYXIoKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdl
YnNpdGVEYXRhU3RvcmUgPSBudWxscHRyOwotICAgIGlmIChzZXNzaW9uSUQpCi0gICAgICAgIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ05vbkRlZmF1bHREYXRh
U3RvcmVGb3JTZXNzaW9uSUQoKnNlc3Npb25JRCk7CisgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vi
c2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nTm9uRGVmYXVsdERhdGFT
dG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwogCiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3Jl
KSB7CiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZjk0MzY3ZmJhOWMxZjY2ZjRiM2M5NDBkZTE2NzRi
OGRkYTZhNTdhNC4uMGE2ZDhjZWFkNTE1YTI2MWJkY2E3Y2MxNDVlYzVkYWJkMWJjNWQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zODEsNyArMzgxLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5
SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQg
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBPcHRpb25hbDxQQUw6
OlNlc3Npb25JRD4pOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29y
a2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQog
ICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wg
YWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxs
b3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYmZjNWZkNjIwMWVjZmE5YTMzNzc1
MGVkZWMyMTJlMjUzYjMyYTNjNS4uNjIzMjQzMGM1OTAyNzcyOTE4MWFkMzJmOGVlZGZlYjQxMTQw
MGNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIuZ2V0KG1ha2VP
YmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSkpOworICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9u
ID0gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmdldChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7
CiAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKICAgICAgICAgICAgIHNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyLDggKzIwMiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgYXV0byBjb25uZWN0aW9ucyA9IHN0ZDo6ZXhjaGFu
Z2UobV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLCB7IH0pOwotICAgIGZvciAoYXV0byYgY29u
bmVjdGlvbiA6IGNvbm5lY3Rpb25zLnZhbHVlcygpKQorICAgIGF1dG8gc3dDb25uZWN0aW9ucyA9
IHN0ZDo6ZXhjaGFuZ2UobV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLCB7IH0pOworICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IHN3Q29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5l
Y3Rpb24tPmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKTsKICNlbmRpZgogfQpAQCAtMjY3LDI5ICsy
NjcsMTAgQEAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3MKIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNW
YWxpZCgpKTsKLSAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5lbnN1cmUoc2Vz
c2lvbklELCBbc2Vzc2lvbklEXSB7CisgICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Np
b24uZW5zdXJlKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBbc2Vzc2lvbklEXSB7CiAgICAgICAgIHJl
dHVybiBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNyZWF0ZShzZXNzaW9uSUQpOwogICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKIH0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92
ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17
Ci0gICAgQVNTRVJUKG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllci5jb250YWlucyhjb25uZWN0
aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKLSAgICBtX3N3Q29ubmVjdGlvbnNC
eUlkZW50aWZpZXIucmVtb3ZlKGNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIo
KSk7Ci19Ci0KLVNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjppbml0aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKFdlYlNXQ2xpZW50Q29ubmVjdGlv
biYgY29ubmVjdGlvbikKLXsKLSAgICBBU1NFUlQoY29ubmVjdGlvbi5zZXNzaW9uSUQoKS5pc1Zh
bGlkKCkpOwotICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAg
ICBib29sIHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVj
dGlvbi5zZXNzaW9uSUQoKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZXBseShpZGVudGlmaWVyKSwgMCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBBU1NFUlQoIW1fc3dDb25u
ZWN0aW9uc0J5SWRlbnRpZmllci5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9zd0Nvbm5l
Y3Rpb25zQnlJZGVudGlmaWVyLmFkZChpZGVudGlmaWVyLCAmY29ubmVjdGlvbik7Ci0KLSAgICBy
ZXR1cm4gaWRlbnRpZmllcjsKLX0KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApp
bmRleCAwMDcxZGIxZjc2YjYwZjYxNTVhZTA0YTM2YjY4ZGI5NGJmMTY3MTYxLi5jMGE4YzNmNDk1
ZmVmYzM1NWZlNmViNjc4NGZkNWEwMWI1ZGFkOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApA
QCAtNzYsMTEgKzc2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgV2ViU1dDbGllbnRDb25uZWN0aW9uKiBleGlzdGluZ1NlcnZpY2VXb3JrZXJD
b25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIHsgcmV0dXJuIG1f
c3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5nZXQoc2Vzc2lvbklEKTsgfQorICAgIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbiogZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24u
Z2V0KHNlc3Npb25JRC50b1VJbnQ2NCgpKTsgfQogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYg
c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLQotICAg
IFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaW5pdGlhbGl6ZVNXQ2xpZW50
Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZVNXQ2xp
ZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTEzLDggKzExMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViU1dDbGll
bnRDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uOwotICAgIEhhc2hNYXA8V2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViU1dDbGllbnRDb25uZWN0aW9u
Kj4gbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+PiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb247CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGU3NWVlZmFkMTU0NzNhNzBhY2Vk
YmE4MjYzM2IwNTQ0NTAxYTIyYzAuLjhiYjgwNzBmYjhkOWVlMTAyNzFiOTU3ZDU0ZDhiZGM0MDFk
OTMxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaC5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUu
aCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oPgpAQCAtNTUsNzcgKzU3LDYxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9p
ZGVudGlmaWVyKG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXJUeXBlPihQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSkpCiAgICAgLCBtX3N3T3Jp
Z2luVGFibGUobWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigpKQogewogICAgIEFTU0VS
VChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVk
ZWQoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIHsgc2Vzc2lvbklEIH0pOwogfQogCiBXZWJTV0Ns
aWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24oKQogewotICAgIGlmIChtX2Nv
bm5lY3Rpb24pCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhpcyk7CisgICAg
Y2xlYXIoKTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmluaXRpYWxpemVDb25u
ZWN0aW9uSWZOZWVkZWQoKQorSVBDOjpDb25uZWN0aW9uKiBXZWJTV0NsaWVudENvbm5lY3Rpb246
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb25uZWN0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKLQotICAgIG1fY29ubmVjdGlvbiA9ICZuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpOwotICAgIG1faWRlbnRpZmllciA9IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5pbml0
aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKCp0aGlzKTsKLQotICAgIHVwZGF0ZVRocm90dGxlU3Rh
dGUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0
aW9uOjplbnN1cmVDb25uZWN0aW9uQW5kU2VuZChjb25zdCBVJiBtZXNzYWdlKQotewotICAgIGlu
aXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAg
ICAgICBzZW5kKG1lc3NhZ2UpOworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCiB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYgam9iRGF0YSkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpvYkluU2VydmVyKGpvYkRh
dGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNjaGVkdWxl
Sm9iSW5TZXJ2ZXIgeyBqb2JEYXRhIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJlc3Vs
dCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0
Y2hpbmdTY3JpcHRJblNlcnZlciB7IHJlc3VsdCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5l
Y3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkFkZFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5T
ZXJ2ZXIgeyBpZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFu
ZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVtb3ZlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkluU2VydmVyKGlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlciB7IGlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3Qg
U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllcikKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2Up
LCBzb3VyY2VJZGVudGlmaWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIH0sIDApOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNv
dXJjZUlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJv
bGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2lu
LmRhdGEoKSwgZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgdXNlckFnZW50IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0
YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNlckFn
ZW50IH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKQogewot
ICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIgeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmll
ciB9IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5yZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQgeyBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyIH0gfSk7CiB9
CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJv
bWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgZW5z
dXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uoa2V5KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSB7IGtleSB9
KTsKIH0KIAogYm9vbCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1heUhhdmVTZXJ2aWNlV29ya2Vy
UmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikgY29u
c3QKQEAgLTE3NiwyNSArMTYyLDI0IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRj
aFJlZ2lzdHJhdGlvbihTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvCiAgICAgcnVu
T3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHRvcE9yaWdpbiA9IFdURk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewog
ICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlm
aWVyOwogICAgICAgICBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzLmFkZChjYWxsYmFj
a0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxi
YWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6TWF0Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3Jp
Z2luLCBjbGllbnRVUkwpKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
Cit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fc3dPcmlnaW5UYWJsZS0+aXNJbXBv
cnRlZCgpKSB7CiAgICAgICAgIHRhc2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X3Rhc2tzUGVuZGluZ09yaWdpbkltcG9ydC5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Ci0gICAgaW5p
dGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
T3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3Vz
Q2FsbGJhY2tJZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3Mu
YWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBlbnN1cmVDb25uZWN0aW9u
QW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9u
UmVhZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFj
a0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6cmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQpAQCAtMjE2LDI5
ICsyMDEsMzIgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMo
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24KICAgICBydW5PckRlbGF5VGFza0Zv
ckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0g
V1RGTW92ZSh0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAg
IG1fb25nb2luZ0dldFJlZ2lzdHJhdGlvbnNUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6R2V0UmVnaXN0cmF0aW9ucyB7IGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJM
IH0pOwogICAgIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRj
aChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIg
fSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNo
IHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwg
cmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJv
ZHkoKSB9LCByZWZlcnJlciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNh
bmNlbEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRl
bnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZSB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50
aWZpZXIgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250
aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewotICAgIG1fY29ubmVjdGlvbiA9IG51
bGxwdHI7CisgICAgY2xlYXIoKTsKK30KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNs
ZWFyKCkKK3sKICAgICBhdXRvIHJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdN
YXRjaFJlZ2lzdHJhdGlvblRhc2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0
cmF0aW9uVGFza3MudmFsdWVzKCkpCiAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CkBA
IC0yNDcsMzEgKzIzNSwyNiBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlv
blRvU2VydmVyTG9zdCgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGdldFJlZ2lzdHJhdGlv
blRhc2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayh7IH0pOwogCisgICAgYXV0byByZWdp
c3RyYXRpb25SZWFkeVRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRh
c2tzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uUmVhZHlUYXNrcy52
YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKwogICAgIGNsZWFyUGVuZGluZ0pvYnMo
KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBpbml0aWFsaXplQ29u
bmVjdGlvbklmTmVlZGVkKCk7Ci0KLSAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChpZGVudGlmaWVyKSwgTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGll
bnQ6OlJlcGx5KCkpOwotfQotCi1XZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25z
dAotewotICAgIGNvbnN0X2Nhc3Q8V2ViU1dDbGllbnRDb25uZWN0aW9uKj4odGhpcyktPmluaXRp
YWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVX
b3JrZXJGcm9tQ2xpZW50IHsgaWRlbnRpZmllciB9LCBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudDo6UmVwbHkoKSk7CiB9CiAKIHZv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKIHsKICAgICBt
X2lzVGhyb3R0bGVhYmxlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXJlQWxsUGFnZXNUaHJv
dHRsZWFibGUoKTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgbV9pc1Rocm90dGxlYWJsZSB9KTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNldFRocm90dGxlU3Rh
dGUgeyBtX2lzVGhyb3R0bGVhYmxlIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6c3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgp
OwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpTdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2sgeyB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmgKaW5kZXggM2FmNDk1ZGNhOTQ0ZGVkYzkxZjU0M2NiZGQ2MTMxYjcwMzll
YjkyMy4uZWZlZjM2YmNhY2QyODU0NTdiZTAxNGY4ZDRjYmM5ZGE2OTljMmY4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU1dD
bGllbnRDb25uZWN0aW9uPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7IHNlc3Npb25JRCB9KTsgfQog
ICAgIH5XZWJTV0NsaWVudENvbm5lY3Rpb24oKTsKIAotICAgIFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5h
bDsKKyAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAK
ICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwpAQCAtNzQsOCArNzQsNiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlNXQ2xpZW50Q29ubmVjdGlvbihQQUw6OlNlc3Np
b25JRCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLQogICAg
IHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9i
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKICAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNl
KSBmaW5hbDsKQEAgLTk3LDI3ICs5NSwyNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVs
ZVN0b3JhZ2VKb2IoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKTsKIAotICAg
IHZvaWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFz
ayk7CisgICAgdm9pZCBydW5PckRlbGF5VGFza0ZvckltcG9ydChGdW5jdGlvbjx2b2lkKCk+JiYg
dGFzayk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAgdWludDY0X3Qg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50
aWZpZXIudG9VSW50NjQoKTsgfQorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0K
IAogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1v
cnk6OkhhbmRsZSYpOwogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZUlzSW1wb3J0ZWQoKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoY29u
c3QgVSYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CiAgICAgVW5pcXVlUmVmPFdlYlNXT3JpZ2luVGFibGU+IG1fc3dPcmlnaW5UYWJsZTsKIAogICAg
IHVpbnQ2NF90IG1fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXIgeyAwIH07CiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2s+IG1fb25nb2luZ01hdGNoUmVnaXN0cmF0
aW9uVGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNr
PiBtX29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
V2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2s+IG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5
VGFza3M7Ci0gICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09y
aWdpbkltcG9ydDsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09y
aWdpbkltcG9ydDsKICAgICBib29sIG1faXNUaHJvdHRsZWFibGUgeyB0cnVlIH07CiB9OyAvLyBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCmluZGV4IGM5MjU3YWI3NWNjYTAwZWYwOTI0MGZkZTc4YzUxMjg2ZDgwYzcxY2UuLjEw
MmQ0NTcwZWRmNDU2YmIzOTAzZjA2YzZmNzY5NWJjMjdjYjAxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTg2LDggKzg2LDkgQEAgUmVmPERvY3VtZW50TG9hZGVy
PiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFIKICAgICByZXR1cm4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJz
dGl0dXRlRGF0YSk7CiB9CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlKQorV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgdWludDY0X3QgcGFnZUdyb3VwSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX3JlZ2lzdHJh
YmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQogICAgICwgbV9wYWdlR3JvdXBJ
RChwYWdlR3JvdXBJRCkKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCiAg
ICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC05OCw2ICs5OSw3IEBAIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uCiAjZW5kaWYKIHsKICAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0b3JlKTsKKyAg
ICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fcmVn
aXN0cmFibGVEb21haW4gfSwgMCk7CiB9CiAKIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojp+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CkBAIC0yNTksOSAr
MjYxLDkgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0
ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcgogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRp
b25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBt
ZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJ
ZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKIH0K
IAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChP
cHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3
YXNTdWNjZXNzZnVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMTZjYzBk
ZWU3NTg4NDBjYzgyYzRjNDI4ZGI0MzhjNDJiZjljM2NiZi4uYjVhMmM2OGFlMjAxZTVhYjcyM2M2
MzAzMzMzMTk5ZjFlNTJiZTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBA
IC01Myw3ICs1Myw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRl
eHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVi
bGljOgotICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOwogICAgIH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCiAgICAgLy8gV2ViQ29yZTo6
U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbi4KLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoT3B0aW9uYWw8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0
aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNl
dFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sKSBmaW5hbDsKQEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAKICAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CiAgICAgdWludDY0X3QgbV9wYWdl
R3JvdXBJRDsKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjRhZTEyMGY5Yjg5NjZhYzMwM2M1NWQ5NDc5MzQ5ODA3
N2I2ZDhjMC4uMTcwMzBlOWUyOWJjZjNjMzBlZGY2ODk1ZDQ3MzVmMWVlNmViMmFhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTgxOCwxMyArMTgxOCwxMyBA
QCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBp
bml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAgICAgLy8g
V2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxs
IGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MK
ICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250
ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rp
b24gYXMgdGhlCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6
YXRpb24gcHVycG9zZXMuCiAgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFn
ZUlELCBzdG9yZSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5l
Y3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVj
dGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJv
eHlJRCwgcGFnZUlELCBzdG9yZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggZWMwZmJlMjJiOWUzM2ZhOTA5NWZlNGE1YjI2M2RiMDEyY2UwODI0OS4uYmU3MTMwMTU4ODQw
NzhiMzg0NWRhMmJjMTljMjkwNTRlMzcyNGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0zNjUsNyArMzY1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7
CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBk
Y2VlMWY0NzRjNWE2Y2Y2MTlhMWI4NmQyODU0MDBiMDVkZGUzODUzLi5mNDQ5ZjVmNDk3NjI5MmNk
ZjA2YjU4MWU4MWMyYjQ3YjQxOTEyMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlh
bFNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1
Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiAgICAgUmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378067</attachid>
            <date>2019-09-05 02:21:32 -0700</date>
            <delta_ts>2019-09-05 02:34:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190905112130.patch</filename>
            <type>text/plain</type>
            <size>84797</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I3YmFlM2MwYjZhOGE1
NThlOTY0NGY3ODQ3MzZhZmViNDEwMmNlZS4uODY3NjE3NmQ1YWFiZDdmOTBmMWY5MzJhMTMwZGRm
Nzk1Y2Q3ZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92aW5nIFNX
IHRvIHByb2Nlc3NJZGVudGlmaWVyIC0gYWxtb3N0IHdvcmtpbmcgYnV0IHNlc3Npb24gSURzCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lv
bklEIHRvIGVhc2UgTmV0d29ya1Byb2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2Vz
cyBjb25uZWN0aW9uLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIExl
dCBjb25uZWN0aW9uIGlkZW50aWZpZXIgYmUgc2V0IGluIGNvbnN0cnVjdG9yIGluc3RlYWQgb2Yg
Z2VuZXJhdGVkLgorCiAyMDE5LTA5LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnRyb2R1Y2UgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uIHRvIG1ha2Ug
U1dDbGllbnRDb25uZWN0aW9uIG1vbm8tdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlNjgzMjIxNjAxNzFi
Zjg3NWRiNjYxZTQzZGQ2NzRiOGRmZTZjNmIuLjA2MzlkMDMzYzZlMmZmMjdhMmYxNDgxNGM5OTIw
ODNhYmVkYzk3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTExIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gYmUgc3RvcmVkIGluIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzCisgICAgICAgIFRoZXkgYXJlIG5vdyBrZXllZCBieSBzZXNzaW9uIElEcyBoZW5jZSB3aHkg
V2ViU1dDbGllbnRDb25uZWN0aW9uIGlzIHVzaW5nIHRoZSBzZXNzaW9uIElEIGFzIG1lc3NhZ2Ug
Y29ubmVjdGlvbiBJRC4KKyAgICAgICAgQ3JlYXRpb24gbm8gbG9uZ2VyIHJlcXVpcmVzIGEgc3lu
YyBJUEMgc2luY2UgdGhlIGNvbm5lY3Rpb24gaXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSBhIHNl
c3Npb24gSUQgYW5kIGEgcHJvY2VzcyBJRC4KKyAgICAgICAgVGhlc2UgSURzIGFyZSBzdGFibGUg
b3ZlciBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdpdGhpbiBOZXR3b3JrUHJvY2Vz
cywgYSBzZXJ2ZXIgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIGJ5IGEgU1dTZXJ2ZXIgd2hpY2ggaXMg
c2Vzc2lvbiBJRCBzcGVjaWZpYy4KKyAgICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgcHJvY2VzcyBp
ZGVudGlmaWVyIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAg
TW92ZSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gYmUgb3duZWQgYnkgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgaXQgYXQg
dGltZSBjb25uZWN0aW9uIHRvIHdlYnByb2Nlc3MgaXMgY3JlYXRlZCwgdXNlIGEgZGVkaWNhdGVk
IElQQyBtZXNzYWdlLgorICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uIG9uY2UgV2ViUHJvY2VzcyBhc2tzIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAgVGhpcyB3
aWxsIGFsbG93IGV4aXN0aW5nIFdlYlByb2Nlc3MgdG8gcnVuIHNlcnZpY2Ugd29ya2Vycy4KKyAg
ICAgICAgQSBtYXAgaXMgc3RpbGwga2VwdCBpbiBOZXR3b3JrIFByb2Nlc3MgdG8gcmV1c2UgY29u
dGV4dCBjb25uZWN0aW9ucyBzaW5jZSB0aGVzZSBjb25uZWN0aW9ucyBhcmUgbm90IHNlc3Npb25J
RCBzcGVjaWZpYy4KKworICAgICAgICBNaWdyYXRlIGZyb20gYSBzaW5nbGUgYm9vbGVhbiB0byBh
IEhhc2hTZXQgdG8gdHJhY2sgd2hldGhlciBzb21lIGNvbm5lY3Rpb25zIGFyZSBpbiB0aGUgcHJv
Y2VzcyBvZiBiZWluZyBjcmVhdGVkLgorICAgICAgICBQcmV2aW91c2x5IGlmIHR3byByZXF1ZXN0
cyB0byBjcmVhdGUgY29ubmVjdGlvbnMgd2VyZSBkb25lIHNob3J0bHkgb25lIGFmdGVyIHRoZSBv
dGhlciBvbiBkaWZmZXJlbnQgcmVnaXN0cmFibGUKKyAgICAgICAgZG9tYWlucywgdGhlIHNlY29u
ZCByZXF1ZXN0IHdvdWxkIG5vdCBiZSBwcm9jZXNzZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zm9yRWFj
aFNXU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJT
V1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dW5y
ZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JT
ZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZXhp
c3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6fldlYlNXQ2xpZW50Q29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnNjaGVkdWxlSm9iSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVtb3ZlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0Ns
aWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29u
bmVjdGlvblRvU2VydmVyTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5
bmNUZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246OnVwZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENv
bm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJBZ2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisKIDIwMTktMDktMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9iaWxlU2FmYXJpIG1heSBjcmFzaCB3aGVuIGludm9raW5nIHRoZSBDKysgbGFt
YmRhIGluIC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRl
eCA3MzkxYzRjMjFhMzZkNTBkNzdmMjA2ZDdiM2VlYmQwNWIwNjQwNGUwLi43NjBjNGNkMGEzYzZl
ZWQ3NWU4YTg2ODY2MmU5NWM0OTA1OTAxNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC05OSw5ICs5OSw5
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyBtZXNzYWdlID0geyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcG9ydHNPckV4
Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgIGF1dG8gc291cmNlSWRlbnRpZmll
ciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCku
aWRlbnRpZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW21lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50
aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRleHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgp
IG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IGNvbnRleHQuc2Vz
c2lvbklEKCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZp
ZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRl
eHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSkKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRp
Zmllciwgc291cmNlT3JpZ2luKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBt
ZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogICAgIH0pOwogCiAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmZTBjMDg0OTJjMzUyMTdhMjM2ZTIz
MmMwNmJjNWFiNjM2Nzg4NmExLi5mZmZiNzExZGUwYjJmZGZiN2RhYTkxZDk2MGU0NGEzYTlmOTEw
M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtl
clN0YXJ0ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChPcHRpb25hbDxTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0YWxs
KE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggOTMyNmEzYmFjNjU5
YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMC4uOWNkOGRlMGQwNzM1NzNkNWU4NTNjMzc5OTRi
YWM1MzU1ZTk5MjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgU2Vjb25kcyB0ZXJtaW5hdGlvbkRlbGF5IHsgMTBfcyB9OwogCi1TV1NlcnZl
cjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyKQorU1dTZXJ2ZXI6OkNv
bm5lY3Rpb246OkNvbm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZlciwgSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9pZGVudGlmaWVyKFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCmluZGV4IDBjNTdhMzU3ZWZlM2VjYjRmNDE5N2NjOTFmMDg3MDIyMGI2
NjcwMGQuLmIzOTRlYmYzYTY1YWIxMDkwYmZhZDgyZTFlZDQ4ZDYwZTRiOTJmMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTU2
LDYgKzU2LDcgQEAgY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFz
cyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBT
ZXJ2aWNlV29ya2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0OwpAQCAtODYsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNv
bnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBjb25z
dCBTZXJ2aWNlV29ya2VyRGF0YSYgbmV3Q29udHJvbGxlcikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mKSA9IDA7CiAKQEAgLTkzLDcgKzk1LDcgQEAgcHVibGljOgogICAgICAg
ICBjb25zdCBTV1NlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29ubmVjdGlv
bihTV1NlcnZlciYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVy
JiwgSWRlbnRpZmllcik7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGFjM2EyMWExZDQ3OGU2NWIyNDFmNjUzODMzYjU5YjlmZjQ1M2Q0
MTEuLjVjMzU4YTZiMmJlNjliZjk0ODNhZGQ1OWNjYTAzOTRkZTVjNDgyNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yMTQsMjEgKzIxNCwyMiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3RpbwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlv
biA9IG1fc3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAg
IGlmIChhdXRvJiBzd0Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnMuZ2V0KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkKICAgICAgICAgICAgIHN3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25U
b0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKLSAgICAgICAg
ICAgIGNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgQVNTRVJUKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIGlm
IChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVj
dGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBt
X25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0
aW9uKGNvbm5lY3Rpb24pKSB7Ci0gICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZUZldGNoVGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIEFTU0VS
VChtX3N3Q29udGV4dENvbm5lY3Rpb24pOworICAgICAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0
aW9uKSB7CisgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVGZXRj
aFRhc2tNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjY5LDcgKzI3MCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byBzd0Nvbm5lY3Rpb24gPSBtX3N3
Q29ubmVjdGlvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpZiAoYXV0
byYgc3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpCiAgICAgICAgICAgICBzd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0y
ODYsMTAgKzI4NywxOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoUmVmUHRyPFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0
d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24o
Y29ubmVjdGlvbikpIHsKLSAgICAgICAgLy8gU2VydmljZSBXb3JrZXIgcHJvY2VzcyBleGl0ZWQu
Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2Fz
Q2xvc2VkKHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGF1
dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gbV9zd0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJs
ZURvbWFpbigpOworCisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNs
b3NlZCgpOworCisgICAgICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7Cisg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0oYXV0byYgc2VydmVy
KSB7CisgICAgICAgICAgICBzZXJ2ZXIubWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFp
bkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICBpZiAoc2VydmVy
Lm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKSkKKyAgICAgICAgICAgICAgICBzZXNzaW9uSUQgPSBzZXJ2ZXIuc2Vzc2lv
bklEKCk7CisgICAgICAgIH0pOworICAgICAgICBpZiAoc2Vzc2lvbklEKQorICAgICAgICAgICAg
bV9uZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3Ry
YWJsZURvbWFpbiwgKnNlc3Npb25JRCk7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7CkBAIC04NzgsMTggKzg4OCwyMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0aW9ucygpCiAgICAgfQogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNv
bm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGF1dG8mIHNlcnZlciA9
IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGF1
dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdv
cmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKLSAgICAK
LSAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyID0gY29ubmVjdGlvbi0+aWRlbnRpZmllcigpOwotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlv
biAtICVzIiwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwg
bV93ZWJQcm9jZXNzSWRlbnRpZmllciwgc2Vzc2lvbklEKTsKIAotICAgIEFTU0VSVCghbV9zd0Nv
bm5lY3Rpb25zLmNvbnRhaW5zKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSk7Ci0gICAgbV9z
d0Nvbm5lY3Rpb25zLmFkZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbWFrZVdlYWtQdHIo
KmNvbm5lY3Rpb24pKTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNz
aW9uSUQudG9VSW50NjQoKSkpOworICAgIG1fc3dDb25uZWN0aW9ucy5hZGQoc2Vzc2lvbklELnRv
VUludDY0KCksIG1ha2VXZWFrUHRyKCpjb25uZWN0aW9uKSk7CiAgICAgc2VydmVyLmFkZENvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAgbV9zd0NvbnRleHRDb25uZWN0aW9u
ID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUobV9uZXR3b3JrUHJvY2Vz
cywgcmVnaXN0cmFibGVEb21haW4sIG1fY29ubmVjdGlvbi5nZXQoKSk7CisKKyAgICBtX25ldHdv
cmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikgeworICAgICAgICBz
ZXJ2ZXIuc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKm1fc3dDb250ZXh0Q29ubmVj
dGlvbik7CisgICAgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IDQyYzE3ZTFiMDViNDA2YjM5NGM5NTRhYjc5YzJhMzg2NDk5MjQxMzQuLmU4YTU2ZmQ3ZTJkMWQ1
MWU4MzkwMjc1NzkyNmM3ZjlhNTQ5MGZlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAg
LTY4LDYgKzY4LDcgQEAgY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiBjbGFzcyBOZXR3b3Jr
U29ja2V0U3RyZWFtOwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OwogY2xhc3MgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OwogdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogCiBuYW1lc3BhY2Ug
TmV0d29ya0NhY2hlIHsKQEAgLTIwOCw3ICsyMDksOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciYmKT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoU1dDb250
ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CiAjZW5kaWYKIApAQCAtMzE5LDcgKzMyMSw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFw
PFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdl
YWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIFJlZlB0
cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmZDA5MmYzMTQ3OTMyNTRjNGZiNTQ3
OThmYjdlNzA2MDdlMzZiNjcxLi43NzdhZGZiN2NiNDlkN2U2YWNiMTI2NzVmNGMxYWNmMjk1Yzlm
NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgx
LDcgKzgxLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9u
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKICNlbmRpZgogCiAgICAgQ3JlYXRl
TmV3TWVzc2FnZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXIgcG9ydDEsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4
IDE0MzdkMWFlMWNkM2VmZTA5MWJkNGQ1MDgzNGUyNDAyMzJiNTEyOTEuLjE4NzI2ZjZlM2RiY2Jm
MDRlZDM4MjJkMGI4ZjM3YmM4ZTRjMTQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMTUsMTcgKzIxNSw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewot
ICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgp
KTsKLSAgICAgICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhdXRvKiB3ZWJTV0Nvbm5lY3Rp
b24gPSBjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rp
b24pKSB7Ci0gICAgICAgICAgICB3ZWJTV0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
fQotI2VuZGlmCiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKIH0KIApAQCAtNDE0LDcgKzQwMyw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50
Pj4KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBjcmVhdGVJUEND
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CiAgICAgaWYgKCFpcGNDb25uZWN0aW9uKSB7CkBAIC00
MzEsMjQgKzQyMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShpcGNDb25uZWN0aW9uLT5zZWNvbmQpKTsKIAogICAgIGNvbm5lY3Rpb24u
c2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgp
KTsKLSAgICAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGlzU2VydmljZVdv
cmtlclByb2Nlc3MpIHsKLSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0Nv
bnRleHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24g
PSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFi
bGVEb21haW4sIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKLSAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAgICAgICBtX3dhaXRp
bmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOwotCi0gICAgICAg
IGZvciAoYXV0byogc2VydmVyIDogU1dTZXJ2ZXI6OmFsbFNlcnZlcnMoKSkKLSAgICAgICAgICAg
IHNlcnZlci0+c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rp
b24pOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nl
c3MpOwotICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7Ci0jZW5kaWYKIAogICAg
IG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpOwogfQpAQCAtMjM5MCwzNiArMjM2MSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRT
YW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZQog
I2VuZGlmIC8vIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNz
Ojpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gOiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnZhbHVlcygpKSB7Ci0gICAgICAg
IGlmIChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5l
Y3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5nZXQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKLXsKLSAgICBhdXRv
JiByZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnJlZ2lzdHJh
YmxlRG9tYWluKCk7Ci0gICAgCi0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVj
dGlvbkNsb3NlZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJl
Z2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1Nl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lz
dHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBp
ZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJD
b25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3Rp
bGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwotICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXVEY6Om51bGxvcHQpOwotICAgIH0KLX0K
LQotYm9vbCBOZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9y
UmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKSBjb25zdAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Zm9yRWFjaFNXU2VydmVyKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoU1dTZXJ2ZXImKT4mIGNhbGxiYWNrKQogewotICAgIHJldHVybiBXVEY6OmFu
eU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAg
cmV0dXJuIHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBz
ZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soKnNlcnZlcik7
CiB9CiAKIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTI0NDcsNDAgKzIzOTIsMzYgQEAgV2ViU1dPcmlnaW5T
dG9yZSogTmV0d29ya1Byb2Nlc3M6OmV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PFdlYlNXT3JpZ2luU3RvcmUmPihz
d1NlcnZlci0+b3JpZ2luU3RvcmUoKSk7CiB9CiAKK2Jvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICByZXR1cm4gV1RG
OjphbnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7CisgICAg
ICAgIHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0pOworfQorCiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluKQogewogICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25zLmdldChyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNy
ZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
Z2lzdHJhYmxlRG9tYWluLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKLSAgICBpZiAobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24pCisgICAgaWYgKG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lz
dHJhYmxlRG9tYWluKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fd2FpdGluZ0ZvclNl
cnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKLSAgICBpZiAoc2Vzc2lvbklE
KQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24ocmVnaXN0cmFibGVEb21haW4sICpzZXNzaW9uSUQp
LCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwotfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQotewotICAgIGlmIChh
dXRvIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGRlc3RpbmF0aW9uSWRl
bnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24t
PnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5j
b250ZXh0SWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291
cmNlT3JpZ2luKTsKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFi
bGVEb21haW4pOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNs
aWVudElkZW50aWZpZXImIHNvdXJjZSwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBpZiAoYXV0byBjb25u
ZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWRlbnRpZmllcikp
Ci0gICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKGRlc3RpbmF0
aW9uLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2UpOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9u
ID0gc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY29ubmVjdGlvbihkZXN0aW5hdGlvbklk
ZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9u
LT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIu
Y29udGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNv
dXJjZU9yaWdpbik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NF
UlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICBBU1NF
UlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIo
KSkpOwotICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbi5pZGVudGlmaWVy
KCksIG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKTsKICAgICBhdXRvKiBzdG9yZSA9IGV4aXN0aW5n
U1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSk7CiAgICAgQVNT
RVJUKHN0b3JlKTsKICAgICBpZiAoc3RvcmUpCkBAIC0yNDg5LDI2ICsyNDMwLDIxIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29u
bmVjdGlvbiYgY29ubmVjdGlvCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAg
IEFTU0VSVChtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigp
KS5nZXQoKSA9PSAmY29ubmVjdGlvbik7Ci0gICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLnJlbW92
ZShjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGF1dG8qIHN0b3JlID0gZXhpc3Rp
bmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihjb25uZWN0aW9uLnNlc3Npb25JRCgpKSkKICAgICAg
ICAgc3RvcmUtPnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVl
ZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byYg
cmVnaXN0cmFibGVEb21haW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxl
RG9tYWluKCk7Ci0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlz
IG5vIGxvbmdlciBuZWVkZWQsIHRlcm1pbmF0aW5nIGl0Iik7Ci0gICAgc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDog
bV9zd1NlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0Zv
clJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAK
LSAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBt
X3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7Cisg
ICAgQVNTRVJUKCFtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rp
b24ucmVnaXN0cmFibGVEb21haW4oKSkpOworICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5z
LnJlbW92ZShjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIG1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNv
bm5lY3Rpb24pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb250ZXh0
Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7
CisgICAgQVNTRVJUKG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKSkgPT0gJmNvbm5lY3Rpb24pOworICAgIG1fc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDA5MGQ0N2YwMWFkMmRjZWQ0OTlhYmU4OTdmNzBiOWE0Y2U5MDdjM2EuLjlk
ODg2ZmQ4NDJiYWUwZmFhOWJkODhmMzU1MjcwNmVmZDhmZjZlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMwMCwxNiArMzAwLDE3IEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIHZvaWQgY3Jl
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgUEFM
OjpTZXNzaW9uSUQpOwogICAgIAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNl
c3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rp
b24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJD
b25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIAotICAgIHZvaWQgc3dDb250
ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7Ci0gICAgCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25u
ZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYp
OwotICAgIHZvaWQgY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoUmVmPFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4mJik7CisgICAgdm9pZCByZWdpc3RlclNXQ29udGV4
dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKKworICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAg
ICB2b2lkIGZvckVhY2hTV1NlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNXU2Vy
dmVyJik+Jik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zOTUsNyAr
Mzk2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwot
ICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0
dGFjaG1lbnQ+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2
b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBA
IC00NjQsMTMgKzQ2NSwxMiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJ
UEM6OkF0dGFjaG1lbnQmKTsKICAgICAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3Jl
OjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
T3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIpOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICAKICAgICB2b2lkIGRpc2FibGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKICAgICAKICAgICBXZWJTV09yaWdp
blN0b3JlKiBleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBj
b25zdDsKLSAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAg
ICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmIHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOwogI2VuZGlmCkBAIC01NDAsMTIgKzU0MCwxMSBAQCBwcml2YXRlOgogICAgIExv
Y2sgbV9zdG9yYWdlVGFza011dGV4OwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBSZWZQdHI8V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKLSAg
ICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFs
c2UgfTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qPiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOwogICAg
IGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
IHsgZmFsc2UgfTsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1fc3dEYXRh
YmFzZVBhdGhzOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTV1NlcnZlcj4+IG1fc3dTZXJ2ZXJzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+
PiBtX3N3U2VydmVyQ29ubmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYmYyMWEyZGM3YmFkYWY2MjAzOTVjZDA1YzYx
ZWQyNDEyMjkzMmY5ZC4uYWIzYmFiYjQ4NGU4N2ZiMzMzNzNkOWE4OTZjMjUxMmQxOTY1MWQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0
IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRp
b24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgYm9vbCBp
c1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3Ry
YWJsZURvbWFpbikgLT4gKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50
aWZpZXIpIEFzeW5jCisgICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpIC0+IChPcHRpb25hbDxJ
UEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYwogCiAjaWYgVVNFKFNP
VVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQpAQCAtMTUz
LDEwICsxNTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgU2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3RvcnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGhhbmRsZSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgUG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCi0KLSAgICBQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3Nh
Z2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlLCBXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQot
CisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRp
ZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5KCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCmluZGV4IDZiY2I5OWExMDBmODZiNjk5Yzc3MTVkNWI1ZjQ0ZjhlYWY2ODVm
YmEuLjkzYmY1MTk4NzY3NjFmMDczMDFmNGIwYmYyMjRlNzY3YWU0YThkNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC02MSw4ICs2MSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogI2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFNXU0VSVkVSQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19F
UlJPUl9JRihtX3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdv
cmtlciwgIiVwIC0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKIAotV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0
d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBTV1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBTV1NlcnZlcjo6
Q29ubmVjdGlvbihzZXJ2ZXIpCitXZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29u
bmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFNXU2VydmVyJiBzZXJ2ZXIs
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXIsIFNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgOiBTV1NlcnZlcjo6Q29ubmVjdGlv
bihzZXJ2ZXIsIG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXJUeXBlPihwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKSkKICAgICAsIG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKICAgICAsIG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAs
IG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCkBAIC0yNTMsMTMgKzI1MywxMyBAQCB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihTZXJ2aWNlV29y
a2VySm9iRGF0YSYmIGpvYkRhdGEpCiAgICAgc2VydmVyKCkuc2NoZWR1bGVKb2IoV1RGTW92ZShq
b2JEYXRhKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0
SWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwg
Y29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewog
ICAgIGF1dG8qIHNvdXJjZVNlcnZpY2VXb3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIGlmICghc291cmNlU2VydmljZVdvcmtlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpQb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudCB7IGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIs
IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZVNlcnZpY2VXb3JrZXItPmRhdGEoKSwgc291cmNlT3Jp
Z2luIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVy
LCBtZXNzYWdlLCBzb3VyY2VTZXJ2aWNlV29ya2VyLT5kYXRhKCksIHNvdXJjZU9yaWdpbiB9KTsK
IH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2
NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCA5MDAyM2Q2NjE4NGZkMmQxODcxZDQ0ODk2MTdhMGY5
ZjY3MmEwMjhiLi5hZGU4ZTdlM2E2MzBjNjE1MGI5MWFhOWFiMjAzMDY2NTU2OWM3NzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+CiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01
Myw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBXZWJTV1NlcnZlckNv
bm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dT
ZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCk7CisgICAgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBJUEM6OkNv
bm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihjb25zdCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mKSA9
IGRlbGV0ZTsKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKQEAgLTY0LDkg
KzY1LDYgQEAgcHVibGljOgogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4
dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKTsKLQogcHJpdmF0ZToKICAgICAvLyBJbXBs
ZW1lbnQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJv
Y2VzcykKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJK
b2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CkBAIC05
NCw2ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOwogICAg
IHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXImJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAorICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNl
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5h
bDsKKwogICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViQ29yZTo6
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJikgZmluYWw7CiAKICAgICBib29sIGlzVGhyb3R0
bGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlYWJsZTsgfQpAQCAtMTAyLDggKzEw
MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0
bGVhYmxlKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAorICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7CisKICAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsgfQotICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaWRlbnRpZmllcigpLnRv
VUludDY0KCk7IH0KKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0KICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCBzZW5kVG9Db250ZXh0UHJvY2VzcyhXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBVJiYgbWVzc2FnZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXgg
YmZlNDAzZGY1ZWJhMjg5NDY5NzU3YzMwNDgxODE0ZGU2YjVhNzMzMC4uN2IxZTkyMDcxMDljZDE0
NTA3NmI5YWE3MjAwOTk1MTE5ZjM4YmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw5ICs0NiwxMyBAQCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihOZXR3b3JrUHJvY2VzcyYgbgogICAgICwgbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogeworICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CiB9CiAK
LVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbigpID0gZGVmYXVsdDsKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQogCiBJUEM6OkNvbm5lY3Rp
b24qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdAogewpAQCAtNjUsNiArNzEsMTIgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQogICAgICAgICBmZXRjaC0+ZmFpbChSZXNv
dXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBX
b3JrZXIgY29udGV4dCBjbG9zZWQiX3MgfSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0
aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdl
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbikKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fbmV0d29ya1By
b2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvbm5lY3Rpb24oZGVzdGluYXRp
b25JZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlm
aWVyLmNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VP
cmlnaW4pOworfQorCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFs
bFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0
YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFs
bFNlcnZpY2VXb3JrZXIgeyBkYXRhLCBzZXNzaW9uSUQsIHVzZXJBZ2VudCB9KTsKQEAgLTExNyw3
ICsxMjksMTcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlz
aFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpCiB7Ci0gICAg
bV9uZXR3b3JrUHJvY2Vzcy0+c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQo
KnRoaXMpOworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzLT5uZWVkc1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29y
a2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVybWluYXRpbmcgaXQiKTsKKyAgICB0
ZXJtaW5hdGUoKTsKKworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0o
YXV0byYgc2VydmVyKSB7CisgICAgICAgIHNlcnZlci5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJh
YmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIH0pOworCisg
ICAgY29ubmVjdGlvbkNsb3NlZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDkwYTA3ZWEy
NGJiYWQzMzc1NjdhNGJlYTM3MjI1ZjM4MjIxMWFhNWIuLjIwZWMxNWU2YmY5OWY4ZWQ2OTJkMGJj
MmI5ZDJkYTVkMGU3ZjhjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RydWN0IEZldGNoT3B0aW9uczsKK3N0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtODIsNiArODMsOCBAQCBwcml2YXRlOgog
ICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5h
bDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFs
OwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9z
dCBXZWJQcm9jZXNzCiAgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KSBmaW5hbDsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5k
ZXggOTk0OWUzZDQzNWYyNDdiNTBiZmQ0NDRkNTA2ZGUyYTk1MjdkYzUyZC4uZTMxNThmYzkwYjM1
NzRlNGI4NjBiZDI0MWMyN2ExYjA0MjZlYjgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zNiw2
ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiB7CiAg
ICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENs
YWltKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBTZXRTY3JpcHRSZXNv
dXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2Ny
aXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSk7
CisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVz
dGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdl
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VP
cmlnaW4pCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA0NDkwMWE4YzM4N2I3ODAwNTA5ODdmOWRiMTY1ZjY0NDBmMmIxNDBiLi41MWIzZTkw
ODA2NmU1ZjhjNDFlZDgwMWY2MWFlOWIxMDE3ZGY0ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0
MiwxNiArMTQyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXMKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rp
b25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHkpCiB7
Ci0gICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7Ci0gICAgUmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW47Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpKSB7
Ci0gICAgICAgIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAgICByZWdpc3Ry
YWJsZURvbWFpbiA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nl
c3NQcm94eSkucmVnaXN0cmFibGVEb21haW4oKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVBy
b2Nlc3NJZGVudGlmaWVyKCksIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIHJlZ2lzdHJhYmxlRG9t
YWluIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJv
eHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50
aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgY29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJv
Y2Vzc0lkZW50aWZpZXIoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
d2ViUHJvY2Vzc1Byb3h5ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlv
blJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjA5
LDEyICsxMjAwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRTYW5kYm94RXh0ZW5z
aW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbikKLXsKLSAgICBtX3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksIFdURjo6bnVsbG9wdCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhw
bGljaXRTZXNzaW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBt
X3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IDgwZGZlNjBhMjQ4NDQzZGQ5NWQxYmU5MGE5ZjE0MWJjMWJiYzFiYzkuLjg4
ZGE3YzA0ZjY2MmM4N2FiODMzNDkyZGI4ODkwOTY3N2M0NjM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0y
MzgsOCArMjM4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwotICAgIHZvaWQgZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9u
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lk
IGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAjZW5kaWYKIAogICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRf
dCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPHVpbnQ2NF90
PiBxdW90YSk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU0YWZlNGI1
YjcxYWY2YjdkMzQ1ZjU2YjBjZjFjMTNhZGRmNjNlNWEuLmE2ZGJiN2M1YzkzNjMzYzIxNDRmZWQ5
ZGY5NjY5ZjNiZjUzYWY2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYx
LDggKzYxLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZl
ciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBleHBsaWNpdFNl
c3Npb24pCisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAjZW5kaWYKIAogICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdp
biwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJl
cXVpcmVkKSAtPiAoT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCA4YjNhNDJjZDA3MWY1NDFmMzA0ZTI1YTRhM2IwY2JkNTA0NTA1ZTkxLi5hNGJhOTJhOTA4
ZjZkYjQwZGU3ZTk5Y2QzOTFmNWFjNjZkZDFmZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzYsOSArNzYs
OSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJv
Y2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJgogICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0
aWFsaXphdGlvbkRhdGEuYWRkKCJyZWdpc3RyYWJsZS1kb21haW4iX3MsIHJlZ2lzdHJhYmxlRG9t
YWluKCkuc3RyaW5nKCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0
YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBPcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4gaW5pdGlhbFNlc3Npb25JRCkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6
c3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1
bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwg
bV9zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgaW5pdGlhbFNlc3Npb25JRC52YWx1ZU9yKFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpIH0sIDApOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCks
IG1fc2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3Jl
LCByZWdpc3RyYWJsZURvbWFpbigpLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5oCmluZGV4IGQ4MGMxYTViMmIwMTY2ODA4OWIzNjE0MmVmOTFlM2RkMzJmYjRhYjEuLmU2
NTY3NTUxOTUzZTAzNjZlODRjMzhjYTU2ZjQ4NjQ1MTgzOWE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VX
b3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7CiAKLSAgICB2b2lk
IHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25J
RD4gaW5pdGlhbFNlc3Npb25JRCk7CisgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBlMzJlYjQzNzYzNTQwYjk2YTAxMTgzMzM4NDEyMWVmMDA5M2E1YjZiLi44MTk2NzJj
ZmE5MTVmMjliMTk4MzI0NWVjOTI2NGNiMzkzM2EwOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2Vi
UHJvY2Vzc1Byb3gKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVF9V
TlVTRUQocHJveHksICZwcm94eSA9PSBtX25ldHdvcmtQcm9jZXNzLmdldCgpKTsKIApAQCAtNzEw
LDkgKzcxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAKICAgICBtX21heUhhdmVSZWdp
c3RlcmVkU2VydmljZVdvcmtlcnMuY2xlYXIoKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdl
YnNpdGVEYXRhU3RvcmUgPSBudWxscHRyOwotICAgIGlmIChzZXNzaW9uSUQpCi0gICAgICAgIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ05vbkRlZmF1bHREYXRh
U3RvcmVGb3JTZXNzaW9uSUQoKnNlc3Npb25JRCk7CisgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vi
c2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nTm9uRGVmYXVsdERhdGFT
dG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwogCiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3Jl
KSB7CiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZjk0MzY3ZmJhOWMxZjY2ZjRiM2M5NDBkZTE2NzRi
OGRkYTZhNTdhNC4uMGE2ZDhjZWFkNTE1YTI2MWJkY2E3Y2MxNDVlYzVkYWJkMWJjNWQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zODEsNyArMzgxLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5
SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQg
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBPcHRpb25hbDxQQUw6
OlNlc3Npb25JRD4pOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29y
a2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQog
ICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wg
YWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxs
b3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYmZjNWZkNjIwMWVjZmE5YTMzNzc1
MGVkZWMyMTJlMjUzYjMyYTNjNS4uNjIzMjQzMGM1OTAyNzcyOTE4MWFkMzJmOGVlZGZlYjQxMTQw
MGNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIuZ2V0KG1ha2VP
YmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSkpOworICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9u
ID0gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmdldChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7
CiAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKICAgICAgICAgICAgIHNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyLDggKzIwMiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgYXV0byBjb25uZWN0aW9ucyA9IHN0ZDo6ZXhjaGFu
Z2UobV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLCB7IH0pOwotICAgIGZvciAoYXV0byYgY29u
bmVjdGlvbiA6IGNvbm5lY3Rpb25zLnZhbHVlcygpKQorICAgIGF1dG8gc3dDb25uZWN0aW9ucyA9
IHN0ZDo6ZXhjaGFuZ2UobV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLCB7IH0pOworICAgIGZvciAo
YXV0byYgY29ubmVjdGlvbiA6IHN3Q29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5l
Y3Rpb24tPmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKTsKICNlbmRpZgogfQpAQCAtMjY3LDI5ICsy
NjcsMTAgQEAgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3MKIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNW
YWxpZCgpKTsKLSAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5lbnN1cmUoc2Vz
c2lvbklELCBbc2Vzc2lvbklEXSB7CisgICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Np
b24uZW5zdXJlKHNlc3Npb25JRC50b1VJbnQ2NCgpLCBbc2Vzc2lvbklEXSB7CiAgICAgICAgIHJl
dHVybiBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNyZWF0ZShzZXNzaW9uSUQpOwogICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKIH0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92
ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17
Ci0gICAgQVNTRVJUKG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllci5jb250YWlucyhjb25uZWN0
aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKLSAgICBtX3N3Q29ubmVjdGlvbnNC
eUlkZW50aWZpZXIucmVtb3ZlKGNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIo
KSk7Ci19Ci0KLVNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjppbml0aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKFdlYlNXQ2xpZW50Q29ubmVjdGlv
biYgY29ubmVjdGlvbikKLXsKLSAgICBBU1NFUlQoY29ubmVjdGlvbi5zZXNzaW9uSUQoKS5pc1Zh
bGlkKCkpOwotICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAg
ICBib29sIHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVj
dGlvbi5zZXNzaW9uSUQoKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZXBseShpZGVudGlmaWVyKSwgMCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBBU1NFUlQoIW1fc3dDb25u
ZWN0aW9uc0J5SWRlbnRpZmllci5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9zd0Nvbm5l
Y3Rpb25zQnlJZGVudGlmaWVyLmFkZChpZGVudGlmaWVyLCAmY29ubmVjdGlvbik7Ci0KLSAgICBy
ZXR1cm4gaWRlbnRpZmllcjsKLX0KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApp
bmRleCAwMDcxZGIxZjc2YjYwZjYxNTVhZTA0YTM2YjY4ZGI5NGJmMTY3MTYxLi5jMGE4YzNmNDk1
ZmVmYzM1NWZlNmViNjc4NGZkNWEwMWI1ZGFkOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApA
QCAtNzYsMTEgKzc2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgV2ViU1dDbGllbnRDb25uZWN0aW9uKiBleGlzdGluZ1NlcnZpY2VXb3JrZXJD
b25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIHsgcmV0dXJuIG1f
c3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5nZXQoc2Vzc2lvbklEKTsgfQorICAgIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbiogZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24u
Z2V0KHNlc3Npb25JRC50b1VJbnQ2NCgpKTsgfQogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYg
c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLQotICAg
IFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaW5pdGlhbGl6ZVNXQ2xpZW50
Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZVNXQ2xp
ZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTEzLDggKzExMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViU1dDbGll
bnRDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uOwotICAgIEhhc2hNYXA8V2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViU1dDbGllbnRDb25uZWN0aW9u
Kj4gbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+PiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb247CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGU3NWVlZmFkMTU0NzNhNzBhY2Vk
YmE4MjYzM2IwNTQ0NTAxYTIyYzAuLjhiYjgwNzBmYjhkOWVlMTAyNzFiOTU3ZDU0ZDhiZGM0MDFk
OTMxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaC5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUu
aCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oPgpAQCAtNTUsNzcgKzU3LDYxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9p
ZGVudGlmaWVyKG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXJUeXBlPihQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSkpCiAgICAgLCBtX3N3T3Jp
Z2luVGFibGUobWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigpKQogewogICAgIEFTU0VS
VChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVk
ZWQoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIHsgc2Vzc2lvbklEIH0pOwogfQogCiBXZWJTV0Ns
aWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24oKQogewotICAgIGlmIChtX2Nv
bm5lY3Rpb24pCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhpcyk7CisgICAg
Y2xlYXIoKTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmluaXRpYWxpemVDb25u
ZWN0aW9uSWZOZWVkZWQoKQorSVBDOjpDb25uZWN0aW9uKiBXZWJTV0NsaWVudENvbm5lY3Rpb246
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb25uZWN0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKLQotICAgIG1fY29ubmVjdGlvbiA9ICZuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpOwotICAgIG1faWRlbnRpZmllciA9IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5pbml0
aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKCp0aGlzKTsKLQotICAgIHVwZGF0ZVRocm90dGxlU3Rh
dGUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0
aW9uOjplbnN1cmVDb25uZWN0aW9uQW5kU2VuZChjb25zdCBVJiBtZXNzYWdlKQotewotICAgIGlu
aXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAg
ICAgICBzZW5kKG1lc3NhZ2UpOworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCiB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYgam9iRGF0YSkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpvYkluU2VydmVyKGpvYkRh
dGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNjaGVkdWxl
Sm9iSW5TZXJ2ZXIgeyBqb2JEYXRhIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJlc3Vs
dCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0
Y2hpbmdTY3JpcHRJblNlcnZlciB7IHJlc3VsdCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5l
Y3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkFkZFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5T
ZXJ2ZXIgeyBpZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFu
ZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVtb3ZlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkluU2VydmVyKGlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlciB7IGlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3Qg
U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllcikKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2Up
LCBzb3VyY2VJZGVudGlmaWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIH0sIDApOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNv
dXJjZUlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJv
bGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2lu
LmRhdGEoKSwgZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgdXNlckFnZW50IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0
YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNlckFn
ZW50IH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKQogewot
ICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIgeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmll
ciB9IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5yZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQgeyBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyIH0gfSk7CiB9
CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJv
bWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgZW5z
dXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uoa2V5KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSB7IGtleSB9
KTsKIH0KIAogYm9vbCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1heUhhdmVTZXJ2aWNlV29ya2Vy
UmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikgY29u
c3QKQEAgLTE3NiwyNSArMTYyLDI0IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRj
aFJlZ2lzdHJhdGlvbihTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvCiAgICAgcnVu
T3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHRvcE9yaWdpbiA9IFdURk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewog
ICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlm
aWVyOwogICAgICAgICBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzLmFkZChjYWxsYmFj
a0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxi
YWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6TWF0Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3Jp
Z2luLCBjbGllbnRVUkwpKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
Cit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fc3dPcmlnaW5UYWJsZS0+aXNJbXBv
cnRlZCgpKSB7CiAgICAgICAgIHRhc2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X3Rhc2tzUGVuZGluZ09yaWdpbkltcG9ydC5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Ci0gICAgaW5p
dGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
T3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3Vz
Q2FsbGJhY2tJZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3Mu
YWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBlbnN1cmVDb25uZWN0aW9u
QW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9u
UmVhZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFj
a0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6cmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQpAQCAtMjE2LDI5
ICsyMDEsMzIgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMo
U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24KICAgICBydW5PckRlbGF5VGFza0Zv
ckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0g
V1RGTW92ZSh0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAg
IG1fb25nb2luZ0dldFJlZ2lzdHJhdGlvbnNUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6R2V0UmVnaXN0cmF0aW9ucyB7IGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJM
IH0pOwogICAgIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRj
aChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIg
fSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNo
IHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwg
cmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJv
ZHkoKSB9LCByZWZlcnJlciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNh
bmNlbEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRl
bnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZSB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50
aWZpZXIgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250
aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewotICAgIG1fY29ubmVjdGlvbiA9IG51
bGxwdHI7CisgICAgY2xlYXIoKTsKK30KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNs
ZWFyKCkKK3sKICAgICBhdXRvIHJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdN
YXRjaFJlZ2lzdHJhdGlvblRhc2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0
cmF0aW9uVGFza3MudmFsdWVzKCkpCiAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CkBA
IC0yNDcsMzEgKzIzNSwyNiBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlv
blRvU2VydmVyTG9zdCgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGdldFJlZ2lzdHJhdGlv
blRhc2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayh7IH0pOwogCisgICAgYXV0byByZWdp
c3RyYXRpb25SZWFkeVRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRh
c2tzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uUmVhZHlUYXNrcy52
YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKwogICAgIGNsZWFyUGVuZGluZ0pvYnMo
KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBpbml0aWFsaXplQ29u
bmVjdGlvbklmTmVlZGVkKCk7Ci0KLSAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChpZGVudGlmaWVyKSwgTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGll
bnQ6OlJlcGx5KCkpOwotfQotCi1XZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25z
dAotewotICAgIGNvbnN0X2Nhc3Q8V2ViU1dDbGllbnRDb25uZWN0aW9uKj4odGhpcyktPmluaXRp
YWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVX
b3JrZXJGcm9tQ2xpZW50IHsgaWRlbnRpZmllciB9LCBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudDo6UmVwbHkoKSk7CiB9CiAKIHZv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKIHsKICAgICBt
X2lzVGhyb3R0bGVhYmxlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXJlQWxsUGFnZXNUaHJv
dHRsZWFibGUoKTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgbV9pc1Rocm90dGxlYWJsZSB9KTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNldFRocm90dGxlU3Rh
dGUgeyBtX2lzVGhyb3R0bGVhYmxlIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6c3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgp
OwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpTdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2sgeyB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmgKaW5kZXggM2FmNDk1ZGNhOTQ0ZGVkYzkxZjU0M2NiZGQ2MTMxYjcwMzll
YjkyMy4uZWZlZjM2YmNhY2QyODU0NTdiZTAxNGY4ZDRjYmM5ZGE2OTljMmY4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU1dD
bGllbnRDb25uZWN0aW9uPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7IHNlc3Npb25JRCB9KTsgfQog
ICAgIH5XZWJTV0NsaWVudENvbm5lY3Rpb24oKTsKIAotICAgIFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5h
bDsKKyAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAK
ICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwpAQCAtNzQsOCArNzQsNiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlNXQ2xpZW50Q29ubmVjdGlvbihQQUw6OlNlc3Np
b25JRCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLQogICAg
IHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9i
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKICAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNl
KSBmaW5hbDsKQEAgLTk3LDI3ICs5NSwyNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVs
ZVN0b3JhZ2VKb2IoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKTsKIAotICAg
IHZvaWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFz
ayk7CisgICAgdm9pZCBydW5PckRlbGF5VGFza0ZvckltcG9ydChGdW5jdGlvbjx2b2lkKCk+JiYg
dGFzayk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAgdWludDY0X3Qg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50
aWZpZXIudG9VSW50NjQoKTsgfQorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0K
IAogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1v
cnk6OkhhbmRsZSYpOwogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZUlzSW1wb3J0ZWQoKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoY29u
c3QgVSYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CiAgICAgVW5pcXVlUmVmPFdlYlNXT3JpZ2luVGFibGU+IG1fc3dPcmlnaW5UYWJsZTsKIAogICAg
IHVpbnQ2NF90IG1fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXIgeyAwIH07CiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2s+IG1fb25nb2luZ01hdGNoUmVnaXN0cmF0
aW9uVGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNr
PiBtX29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
V2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2s+IG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5
VGFza3M7Ci0gICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09y
aWdpbkltcG9ydDsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09y
aWdpbkltcG9ydDsKICAgICBib29sIG1faXNUaHJvdHRsZWFibGUgeyB0cnVlIH07CiB9OyAvLyBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCmluZGV4IGM5MjU3YWI3NWNjYTAwZWYwOTI0MGZkZTc4YzUxMjg2ZDgwYzcxY2UuLjEw
MmQ0NTcwZWRmNDU2YmIzOTAzZjA2YzZmNzY5NWJjMjdjYjAxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTg2LDggKzg2LDkgQEAgUmVmPERvY3VtZW50TG9hZGVy
PiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFIKICAgICByZXR1cm4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJz
dGl0dXRlRGF0YSk7CiB9CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlKQorV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgdWludDY0X3QgcGFnZUdyb3VwSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX3JlZ2lzdHJh
YmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQogICAgICwgbV9wYWdlR3JvdXBJ
RChwYWdlR3JvdXBJRCkKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCiAg
ICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC05OCw2ICs5OSw3IEBAIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uCiAjZW5kaWYKIHsKICAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0b3JlKTsKKyAg
ICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fcmVn
aXN0cmFibGVEb21haW4gfSwgMCk7CiB9CiAKIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojp+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CkBAIC0yNTksOSAr
MjYxLDkgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0
ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcgogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRp
b25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNl
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBt
ZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJ
ZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKIH0K
IAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChP
cHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3
YXNTdWNjZXNzZnVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMTZjYzBk
ZWU3NTg4NDBjYzgyYzRjNDI4ZGI0MzhjNDJiZjljM2NiZi4uYjVhMmM2OGFlMjAxZTVhYjcyM2M2
MzAzMzMzMTk5ZjFlNTJiZTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBA
IC01Myw3ICs1Myw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRl
eHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVi
bGljOgotICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOwogICAgIH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCiAgICAgLy8gV2ViQ29yZTo6
U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbi4KLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoT3B0aW9uYWw8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0
aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNl
dFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sKSBmaW5hbDsKQEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAKICAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CiAgICAgdWludDY0X3QgbV9wYWdl
R3JvdXBJRDsKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjRhZTEyMGY5Yjg5NjZhYzMwM2M1NWQ5NDc5MzQ5ODA3
N2I2ZDhjMC4uMTcwMzBlOWUyOWJjZjNjMzBlZGY2ODk1ZDQ3MzVmMWVlNmViMmFhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTgxOCwxMyArMTgxOCwxMyBA
QCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBp
bml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAgICAgLy8g
V2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxs
IGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MK
ICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250
ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rp
b24gYXMgdGhlCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6
YXRpb24gcHVycG9zZXMuCiAgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFn
ZUlELCBzdG9yZSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5l
Y3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVj
dGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJv
eHlJRCwgcGFnZUlELCBzdG9yZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggZWMwZmJlMjJiOWUzM2ZhOTA5NWZlNGE1YjI2M2RiMDEyY2UwODI0OS4uYmU3MTMwMTU4ODQw
NzhiMzg0NWRhMmJjMTljMjkwNTRlMzcyNGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0zNjUsNyArMzY1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7
CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBk
Y2VlMWY0NzRjNWE2Y2Y2MTlhMWI4NmQyODU0MDBiMDVkZGUzODUzLi5mNDQ5ZjVmNDk3NjI5MmNk
ZjA2YjU4MWU4MWMyYjQ3YjQxOTEyMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlh
bFNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1
Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW4sIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiAgICAgUmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378068</attachid>
            <date>2019-09-05 02:34:34 -0700</date>
            <delta_ts>2019-09-05 03:30:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190905113432.patch</filename>
            <type>text/plain</type>
            <size>84795</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I3YmFlM2MwYjZhOGE1
NThlOTY0NGY3ODQ3MzZhZmViNDEwMmNlZS4uODY3NjE3NmQ1YWFiZDdmOTBmMWY5MzJhMTMwZGRm
Nzk1Y2Q3ZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92aW5nIFNX
IHRvIHByb2Nlc3NJZGVudGlmaWVyIC0gYWxtb3N0IHdvcmtpbmcgYnV0IHNlc3Npb24gSURzCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lv
bklEIHRvIGVhc2UgTmV0d29ya1Byb2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2Vz
cyBjb25uZWN0aW9uLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIExl
dCBjb25uZWN0aW9uIGlkZW50aWZpZXIgYmUgc2V0IGluIGNvbnN0cnVjdG9yIGluc3RlYWQgb2Yg
Z2VuZXJhdGVkLgorCiAyMDE5LTA5LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnRyb2R1Y2UgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uIHRvIG1ha2Ug
U1dDbGllbnRDb25uZWN0aW9uIG1vbm8tdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlNjgzMjIxNjAxNzFi
Zjg3NWRiNjYxZTQzZGQ2NzRiOGRmZTZjNmIuLjA2MzlkMDMzYzZlMmZmMjdhMmYxNDgxNGM5OTIw
ODNhYmVkYzk3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTExIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gYmUgc3RvcmVkIGluIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzCisgICAgICAgIFRoZXkgYXJlIG5vdyBrZXllZCBieSBzZXNzaW9uIElEcyBoZW5jZSB3aHkg
V2ViU1dDbGllbnRDb25uZWN0aW9uIGlzIHVzaW5nIHRoZSBzZXNzaW9uIElEIGFzIG1lc3NhZ2Ug
Y29ubmVjdGlvbiBJRC4KKyAgICAgICAgQ3JlYXRpb24gbm8gbG9uZ2VyIHJlcXVpcmVzIGEgc3lu
YyBJUEMgc2luY2UgdGhlIGNvbm5lY3Rpb24gaXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSBhIHNl
c3Npb24gSUQgYW5kIGEgcHJvY2VzcyBJRC4KKyAgICAgICAgVGhlc2UgSURzIGFyZSBzdGFibGUg
b3ZlciBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdpdGhpbiBOZXR3b3JrUHJvY2Vz
cywgYSBzZXJ2ZXIgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIGJ5IGEgU1dTZXJ2ZXIgd2hpY2ggaXMg
c2Vzc2lvbiBJRCBzcGVjaWZpYy4KKyAgICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgcHJvY2VzcyBp
ZGVudGlmaWVyIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAg
TW92ZSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gYmUgb3duZWQgYnkgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgaXQgYXQg
dGltZSBjb25uZWN0aW9uIHRvIHdlYnByb2Nlc3MgaXMgY3JlYXRlZCwgdXNlIGEgZGVkaWNhdGVk
IElQQyBtZXNzYWdlLgorICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uIG9uY2UgV2ViUHJvY2VzcyBhc2tzIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAgVGhpcyB3
aWxsIGFsbG93IGV4aXN0aW5nIFdlYlByb2Nlc3MgdG8gcnVuIHNlcnZpY2Ugd29ya2Vycy4KKyAg
ICAgICAgQSBtYXAgaXMgc3RpbGwga2VwdCBpbiBOZXR3b3JrIFByb2Nlc3MgdG8gcmV1c2UgY29u
dGV4dCBjb25uZWN0aW9ucyBzaW5jZSB0aGVzZSBjb25uZWN0aW9ucyBhcmUgbm90IHNlc3Npb25J
RCBzcGVjaWZpYy4KKworICAgICAgICBNaWdyYXRlIGZyb20gYSBzaW5nbGUgYm9vbGVhbiB0byBh
IEhhc2hTZXQgdG8gdHJhY2sgd2hldGhlciBzb21lIGNvbm5lY3Rpb25zIGFyZSBpbiB0aGUgcHJv
Y2VzcyBvZiBiZWluZyBjcmVhdGVkLgorICAgICAgICBQcmV2aW91c2x5IGlmIHR3byByZXF1ZXN0
cyB0byBjcmVhdGUgY29ubmVjdGlvbnMgd2VyZSBkb25lIHNob3J0bHkgb25lIGFmdGVyIHRoZSBv
dGhlciBvbiBkaWZmZXJlbnQgcmVnaXN0cmFibGUKKyAgICAgICAgZG9tYWlucywgdGhlIHNlY29u
ZCByZXF1ZXN0IHdvdWxkIG5vdCBiZSBwcm9jZXNzZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zm9yRWFj
aFNXU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJT
V1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dW5y
ZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JT
ZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZXhp
c3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6fldlYlNXQ2xpZW50Q29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnNjaGVkdWxlSm9iSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVtb3ZlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0Ns
aWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29u
bmVjdGlvblRvU2VydmVyTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5
bmNUZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246OnVwZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENv
bm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJBZ2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisKIDIwMTktMDktMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9iaWxlU2FmYXJpIG1heSBjcmFzaCB3aGVuIGludm9raW5nIHRoZSBDKysgbGFt
YmRhIGluIC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRl
eCA3MzkxYzRjMjFhMzZkNTBkNzdmMjA2ZDdiM2VlYmQwNWIwNjQwNGUwLi43NjBjNGNkMGEzYzZl
ZWQ3NWU4YTg2ODY2MmU5NWM0OTA1OTAxNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC05OSw5ICs5OSw5
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyBtZXNzYWdlID0geyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcG9ydHNPckV4
Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgIGF1dG8gc291cmNlSWRlbnRpZmll
ciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCku
aWRlbnRpZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW21lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50
aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRleHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgp
IG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IGNvbnRleHQuc2Vz
c2lvbklEKCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZp
ZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRl
eHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSkKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRp
Zmllciwgc291cmNlT3JpZ2luKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBt
ZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogICAgIH0pOwogCiAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmZTBjMDg0OTJjMzUyMTdhMjM2ZTIz
MmMwNmJjNWFiNjM2Nzg4NmExLi5mZmZiNzExZGUwYjJmZGZiN2RhYTkxZDk2MGU0NGEzYTlmOTEw
M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtl
clN0YXJ0ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChPcHRpb25hbDxTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0YWxs
KE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggOTMyNmEzYmFjNjU5
YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMC4uOWNkOGRlMGQwNzM1NzNkNWU4NTNjMzc5OTRi
YWM1MzU1ZTk5MjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgU2Vjb25kcyB0ZXJtaW5hdGlvbkRlbGF5IHsgMTBfcyB9OwogCi1TV1NlcnZl
cjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyKQorU1dTZXJ2ZXI6OkNv
bm5lY3Rpb246OkNvbm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZlciwgSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9pZGVudGlmaWVyKFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCmluZGV4IDBjNTdhMzU3ZWZlM2VjYjRmNDE5N2NjOTFmMDg3MDIyMGI2
NjcwMGQuLmIzOTRlYmYzYTY1YWIxMDkwYmZhZDgyZTFlZDQ4ZDYwZTRiOTJmMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTU2
LDYgKzU2LDcgQEAgY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFz
cyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBT
ZXJ2aWNlV29ya2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0OwpAQCAtODYsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNv
bnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBjb25z
dCBTZXJ2aWNlV29ya2VyRGF0YSYgbmV3Q29udHJvbGxlcikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mKSA9IDA7CiAKQEAgLTkzLDcgKzk1LDcgQEAgcHVibGljOgogICAgICAg
ICBjb25zdCBTV1NlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29ubmVjdGlv
bihTV1NlcnZlciYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVy
JiwgSWRlbnRpZmllcik7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGFjM2EyMWExZDQ3OGU2NWIyNDFmNjUzODMzYjU5YjlmZjQ1M2Q0
MTEuLmIxY2QyY2Y5NzNjMTVjNjJkZWUzZGFjMjIxYTlmMjU2MjU4ODk5MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yMTQsMjEgKzIxNCwyMiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3RpbwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlv
biA9IG1fc3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAg
IGlmIChhdXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQoZGVjb2Rlci5kZXN0
aW5hdGlvbklEKCkpKQogICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRv
Q29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewotICAgICAgICAg
ICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgaWYg
KG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0
aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1f
bmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rp
b24oY29ubmVjdGlvbikpIHsKLSAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNl
aXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgQVNTRVJU
KG1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIGlmIChtX3N3Q29udGV4dENvbm5lY3Rp
b24pIHsKKyAgICAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZUZldGNo
VGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yNjksNyArMjcwLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmUKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dD
b25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIGlmIChhdXRv
IHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCkpKQogICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjg2
LDEwICsyODcsMTkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
IHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFJlZlB0cjxXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24+IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBtX25ldHdv
cmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNv
bm5lY3Rpb24pKSB7Ci0gICAgICAgIC8vIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgZXhpdGVkLgot
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Ns
b3NlZChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAg
ICByZXR1cm47CisgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBhdXRv
JiByZWdpc3RyYWJsZURvbWFpbiA9IG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+cmVnaXN0cmFibGVE
b21haW4oKTsKKworICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9z
ZWQoKTsKKworICAgICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEOworICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikg
eworICAgICAgICAgICAgc2VydmVyLm1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFibGVEb21haW5B
c1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICAgICAgaWYgKHNlcnZlci5u
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3Ry
YWJsZURvbWFpbikpCisgICAgICAgICAgICAgICAgc2Vzc2lvbklEID0gc2VydmVyLnNlc3Npb25J
RCgpOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHNlc3Npb25JRCkKKyAgICAgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFi
bGVEb21haW4sICpzZXNzaW9uSUQpOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOwpAQCAtODc4LDE4ICs4ODgsMjMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25u
ZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBhdXRvJiBzZXJ2ZXIgPSBt
X25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBhdXRv
IGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3Jr
UHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7Ci0gICAgCi0g
ICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKTsKLSAgICBMT0coU2VydmljZVdvcmtlciwgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24g
LSAlcyIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29u
bmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCk7CiAKLSAgICBBU1NFUlQoIW1fc3dDb25u
ZWN0aW9ucy5jb250YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOwotICAgIG1fc3dD
b25uZWN0aW9ucy5hZGQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1ha2VXZWFrUHRyKCpj
b25uZWN0aW9uKSk7CisgICAgQVNTRVJUKCFtX3N3Q29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lv
bklELnRvVUludDY0KCkpKTsKKyAgICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRC50b1VJ
bnQ2NCgpLCBtYWtlV2Vha1B0cigqY29ubmVjdGlvbikpOwogICAgIHNlcnZlci5hZGRDb25uZWN0
aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Ms
IHJlZ2lzdHJhYmxlRG9tYWluLCBtX2Nvbm5lY3Rpb24uZ2V0KCkpOworCisgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+Zm9yRWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2ZXIpIHsKKyAgICAgICAgc2Vy
dmVyLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCptX3N3Q29udGV4dENvbm5lY3Rp
b24pOworICAgIH0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA0
MmMxN2UxYjA1YjQwNmIzOTRjOTU0YWI3OWMyYTM4NjQ5OTI0MTM0Li5lOGE1NmZkN2UyZDFkNTFl
ODM5MDI3NTc5MjZjN2Y5YTU0OTBmZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02
OCw2ICs2OCw3IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xhc3MgTmV0d29ya1Nv
Y2tldFN0cmVhbTsKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDsKIGNsYXNzIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsK
IHR5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIAogbmFtZXNwYWNlIE5l
dHdvcmtDYWNoZSB7CkBAIC0yMDgsNyArMjA5LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0
aW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2
ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4
dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyU1dDb25uZWN0aW9ucygpOwogI2VuZGlmCiAKQEAgLTMxOSw3ICszMjEsOCBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxX
ZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWFrUHRyPFdlYlNXU2VydmVy
Q29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWFr
UHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAgICBSZWZQdHI8
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmQwOTJmMzE0NzkzMjU0YzRmYjU0Nzk4
ZmI3ZTcwNjA3ZTM2YjY3MS4uNzc3YWRmYjdjYjQ5ZDdlNmFjYjEyNjc1ZjRjMWFjZjI5NWM5ZjRm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04MSw3
ICs4MSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChX
ZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKSBTeW5jaHJvbm91cworICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAjZW5kaWYKIAogICAgIENyZWF0ZU5l
d01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVy
IHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAx
NDM3ZDFhZTFjZDNlZmUwOTFiZDRkNTA4MzRlMjQwMjMyYjUxMjkxLi4xODcyNmY2ZTNkYmNiZjA0
ZWQzODIyZDBiOGYzN2JjOGU0YzE0MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjE1LDE3ICsyMTUsNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlcgogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAg
ICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7
Ci0gICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYXV0byogd2ViU1dDb25uZWN0aW9u
ID0gY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9u
KSkgewotICAgICAgICAgICAgd2ViU1dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LSNlbmRpZgogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CiB9CiAKQEAgLTQxNCw3ICs0MDMsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFs
PHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+
CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29u
bmVjdGlvblRvV2ViUHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDMx
LDI0ICs0MjAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudAogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoaXBjQ29ubmVjdGlvbi0+c2Vjb25kKSk7CiAKICAgICBjb25uZWN0aW9uLnNl
dE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7
Ci0gICAgCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChpc1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzKSB7Ci0gICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtl
ckVudGl0bGVtZW50KCkpOwotICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yU2VydmVyVG9Db250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0g
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMsIHJlZ2lzdHJhYmxl
RG9tYWluLCBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURv
bWFpbiksIGNvbnRleHRDb25uZWN0aW9uLmNvcHlSZWYoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0KLSAgICAgICAgbV93YWl0aW5n
Rm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKLQotICAgICAgICBm
b3IgKGF1dG8qIHNlcnZlciA6IFNXU2VydmVyOjphbGxTZXJ2ZXJzKCkpCi0gICAgICAgICAgICBz
ZXJ2ZXItPnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9u
KTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpc1NlcnZpY2VXb3JrZXJQcm9jZXNz
KTsKLSAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwotI2VuZGlmCiAKICAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
KTsKIH0KQEAgLTIzOTAsMzYgKzIzNjEsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0U2Fu
ZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGUKICNl
bmRpZiAvLyBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6
Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCi17Ci0gICAgZm9yIChhdXRvJiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIDogbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpID09ICZjb25uZWN0
aW9uKQotICAgICAgICAgICAgcmV0dXJuIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uZ2V0KCk7
Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpj
b25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCi17Ci0gICAgYXV0byYg
cmVnaXN0cmFibGVEb21haW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJs
ZURvbWFpbigpOwotICAgIAotICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rp
b25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdp
c3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2
ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JSZWdpc3Ry
YWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAgaWYg
KG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiQ29u
bmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxs
IG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKLSAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgV1RGOjpudWxsb3B0KTsKLSAgICB9Ci19Ci0K
LWJvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bikgY29uc3QKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmZvckVhY2hTV1NlcnZlcihjb25zdCBGdW5j
dGlvbjx2b2lkKFNXU2VydmVyJik+JiBjYWxsYmFjaykKIHsKLSAgICByZXR1cm4gV1RGOjphbnlP
ZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7Ci0gICAgICAgIHJl
dHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwotICAgIH0pOworICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKCpzZXJ2ZXIpOwog
fQogCiBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCkBAIC0yNDQ3LDQwICsyMzkyLDM2IEBAIFdlYlNXT3JpZ2luU3Rv
cmUqIE5ldHdvcmtQcm9jZXNzOjpleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklECiAgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4oc3dT
ZXJ2ZXItPm9yaWdpblN0b3JlKCkpOwogfQogCitib29sIE5ldHdvcmtQcm9jZXNzOjpuZWVkc1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6
YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsmXShhdXRvJiBzd1NlcnZlcikgeworICAgICAg
ICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9KTsKK30KKwogV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbikKIHsKICAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
cy5nZXQocmVnaXN0cmFibGVEb21haW4pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7Ci0gICAgaWYgKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKQorICAgIGlmIChtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3Ry
YWJsZURvbWFpbikpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX3dhaXRpbmdGb3JTZXJ2
ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7Ci0gICAgaWYgKHNlc3Npb25JRCkK
LSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKHJlZ2lzdHJhYmxlRG9tYWluLCAqc2Vzc2lvbklEKSwg
MCk7Ci0gICAgZWxzZQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MocmVnaXN0cmFibGVEb21haW4pLCAwKTsKLX0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKLXsKLSAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChkZXN0aW5hdGlvbklkZW50
aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5w
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuY29u
dGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJj
ZU9yaWdpbik7CisgICAgbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgc2Vzc2lvbklEIH0sIDApOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGll
bnRJZGVudGlmaWVyJiBzb3VyY2UsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgaWYgKGF1dG8gY29ubmVj
dGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoY29ubmVjdGlvbklkZW50aWZpZXIpKQot
ICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihkZXN0aW5hdGlv
biwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9
IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvbm5lY3Rpb24oZGVzdGluYXRpb25JZGVu
dGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLmNv
bnRleHRJZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3Vy
Y2VPcmlnaW4pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29u
bmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJU
KHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgQVNTRVJU
KCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkp
KTsKLSAgICBtX3N3U2VydmVyQ29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24uaWRlbnRpZmllcigp
LCBtYWtlV2Vha1B0cihjb25uZWN0aW9uKSk7CiAgICAgYXV0byogc3RvcmUgPSBleGlzdGluZ1NX
T3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpOwogICAgIEFTU0VS
VChzdG9yZSk7CiAgICAgaWYgKHN0b3JlKQpAQCAtMjQ4OSwyNiArMjQzMCwyMSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5l
Y3Rpb24mIGNvbm5lY3RpbwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2
ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKLSAgICBB
U1NFUlQobV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSku
Z2V0KCkgPT0gJmNvbm5lY3Rpb24pOwotICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5yZW1vdmUo
Y29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwogICAgIGlmIChhdXRvKiBzdG9yZSA9IGV4aXN0aW5n
U1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSkpCiAgICAgICAg
IHN0b3JlLT51bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpzd0NvbnRleHRDb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRl
ZChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24pCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8mIHJl
Z2lzdHJhYmxlRG9tYWluID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURv
bWFpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBu
byBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwotICAgIHNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24udGVybWluYXRlKCk7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1f
c3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JS
ZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgCi0g
ICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworICAg
IEFTU0VSVCghbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9u
LnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5y
ZW1vdmUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb25u
ZWN0aW9uKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29udGV4dENv
bm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQorewor
ICAgIEFTU0VSVChtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uLnJl
Z2lzdHJhYmxlRG9tYWluKCkpID09ICZjb25uZWN0aW9uKTsKKyAgICBtX3NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAppbmRleCAwOTBkNDdmMDFhZDJkY2VkNDk5YWJlODk3ZjcwYjlhNGNlOTA3YzNhLi45ZDg4
NmZkODQyYmFlMGZhYTliZDg4ZjM1NTI3MDZlZmQ4ZmY2ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMDAsMTYgKzMwMCwxNyBAQCBw
dWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKLSAgICB2b2lkIGNyZWF0
ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOworICAgIHZvaWQgY3JlYXRlU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFBBTDo6
U2Vzc2lvbklEKTsKICAgICAKICAgICBXZWJDb3JlOjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9u
KFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXU2VydmVyQ29u
bmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKICAgICAKLSAgICB2b2lkIHN3Q29udGV4
dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYpOwotICAgIAotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVj
dGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsK
LSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJTV0NvbnRleHRD
b25uZWN0aW9uKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgdW5y
ZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Jik7CisKKyAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAg
dm9pZCBmb3JFYWNoU1dTZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpTV1NlcnZl
ciYpPiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzk1LDcgKzM5
Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lkIGluaXRpYWxp
emVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKLSAg
ICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRh
Y2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNl
dDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAt
NDY0LDEzICs0NjUsMTIgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBD
OjpBdHRhY2htZW50Jik7CiAgICAgCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
cihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9y
Q2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6
U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVz
dGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSwgV2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgCiAgICAgdm9pZCBkaXNhYmxlU2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgCiAgICAgV2ViU1dPcmlnaW5T
dG9yZSogZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCkgY29u
c3Q7Ci0gICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogCiAgICAg
dm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgU3RyaW5nJiBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmKTsKICNlbmRpZgpAQCAtNTQwLDEyICs1NDAsMTEgQEAgcHJpdmF0ZToKICAgICBMb2Nr
IG1fc3RvcmFnZVRhc2tNdXRleDsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUmVmUHRyPFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnM7Ci0gICAg
Ym9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNl
IH07CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAgICBi
b29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7
IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJh
c2VQYXRoczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4g
bV9zd1NlcnZlckNvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJmMjFhMmRjN2JhZGFmNjIwMzk1Y2QwNWM2MWVk
MjQxMjI5MzJmOWQuLmFiM2JhYmI0ODRlODdmYjMzMzczZDlhODk2YzI1MTJkMTk2NTFkMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHN0cnVjdCBX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9uIGZvciBjb21tdW5pY2F0aW9u
IHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFi
bGVEb21haW4pIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8SVBD
OjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllcikgQXN5bmMKIAogI2lmIFVTRShTT1VQ
KQogICAgIFNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKQEAgLTE1Mywx
MCArMTUzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFNldENhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBoYW5kbGUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQotCi0gICAgUG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVz
dGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdl
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKLQor
ICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
IG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZp
ZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheSgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAppbmRleCA2YmNiOTlhMTAwZjg2YjY5OWM3NzE1ZDViNWY0NGY4ZWFmNjg1ZmJh
Li45M2JmNTE5ODc2NzYxZjA3MzAxZjRiMGJmMjI0ZTc2N2FlNGE4ZDY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNjEsOCArNjEsOCBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJ
T05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3Jr
ZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdT
X18pCiAKLVdlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgU1dTZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24oc2VydmVyKQorV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBTV1NlcnZlciYgc2VydmVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVu
dGlmaWVyLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIDogU1dTZXJ2ZXI6OkNvbm5lY3Rpb24o
c2VydmVyLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
VHlwZT4ocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSkpCiAgICAgLCBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCiAgICAgLCBtX2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBt
X25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpAQCAtMjUzLDEzICsyNTMsMTMgQEAgdm9p
ZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoU2VydmljZVdvcmtl
ckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIHNlcnZlcigpLnNjaGVkdWxlSm9iKFdURk1vdmUoam9i
RGF0YSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElk
ZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
Cit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIGNv
bnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKICAg
ICBhdXRvKiBzb3VyY2VTZXJ2aWNlV29ya2VyID0gc2VydmVyKCkud29ya2VyQnlJRChzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICBpZiAoIXNvdXJjZVNlcnZpY2VXb3JrZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VTZXJ2aWNlV29ya2VyLT5kYXRhKCksIHNvdXJjZU9yaWdp
biB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50IHsgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwg
bWVzc2FnZSwgc291cmNlU2VydmljZVdvcmtlci0+ZGF0YSgpLCBzb3VyY2VPcmlnaW4gfSk7CiB9
CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRf
dCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggOTAwMjNkNjYxODRmZDJkMTg3MWQ0NDg5NjE3YTBmOWY2
NzJhMDI4Yi4uYWRlOGU3ZTNhNjMwYzYxNTBiOTFhYTlhYjIwMzA2NjU1NjljNzc1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTMs
NyArNTQsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgot
ICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlNXU2Vy
dmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIFdlYlNXU2VydmVy
Q29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlNXU2VydmVyJiwgSVBDOjpDb25u
ZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKICAg
ICBXZWJTV1NlcnZlckNvbm5lY3Rpb24oY29uc3QgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJikgPSBk
ZWxldGU7CiAgICAgfldlYlNXU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsOwogCkBAIC02NCw5ICs2
NSw2IEBAIHB1YmxpYzoKIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRleHRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7Ci0KIHByaXZhdGU6CiAgICAgLy8gSW1wbGVt
ZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nl
c3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9i
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpIGZpbmFsOwpAQCAtOTQs
NiArOTIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKICAgICB2
b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
ciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZVNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7
CisKICAgICB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpIGZpbmFsOwogCiAgICAgYm9vbCBpc1Rocm90dGxl
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRsZWFibGU7IH0KQEAgLTEwMiw4ICsxMDIs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxl
YWJsZSk7CiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKKyAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRl
c3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UpOworCiAgICAgSVBD
OjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7IH0KLSAgICB1aW50NjRfdCBtZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpOyB9CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRC50b1VJbnQ2NCgpOyB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoV2ViQ29y
ZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgVSYmIG1lc3NhZ2UpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGJm
ZTQwM2RmNWViYTI4OTQ2OTc1N2MzMDQ4MTgxNGRlNmI1YTczMzAuLjdiMWU5MjA3MTA5Y2QxNDUw
NzZiOWFhNzIwMDk5NTExOWYzOGJlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsOSArNDYsMTMgQEAgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
TmV0d29ya1Byb2Nlc3MmIG4KICAgICAsIG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rp
b24pKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKIHsKKyAgICBtX25l
dHdvcmtQcm9jZXNzLT5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOwogfQogCi1X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKSA9IGRlZmF1bHQ7CitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnVu
cmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KIAogSVBDOjpDb25uZWN0aW9u
KiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKIHsKQEAgLTY1LDYgKzcxLDEyIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkKCkKICAgICAgICAgZmV0Y2gtPmZhaWwoUmVzb3Vy
Y2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29y
a2VyIGNvbnRleHQgY2xvc2VkIl9zIH0pOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX25ldHdvcmtQcm9j
ZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jb25uZWN0aW9uKGRlc3RpbmF0aW9u
SWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rp
b24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmll
ci5jb250ZXh0SWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3Jp
Z2luKTsKK30KKwogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omluc3RhbGxT
ZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Okluc3RhbGxT
ZXJ2aWNlV29ya2VyIHsgZGF0YSwgc2Vzc2lvbklELCB1c2VyQWdlbnQgfSk7CkBAIC0xMTcsNyAr
MTI5LDE3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hT
a2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKQogewotICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCp0
aGlzKTsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2Vzcy0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtl
ciBwcm9jZXNzIGlzIG5vIGxvbmdlciBuZWVkZWQsIHRlcm1pbmF0aW5nIGl0Iik7CisgICAgdGVy
bWluYXRlKCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1
dG8mIHNlcnZlcikgeworICAgICAgICBzZXJ2ZXIubWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJs
ZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICB9KTsKKworICAg
IGNvbm5lY3Rpb25DbG9zZWQoKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA5MGEwN2VhMjRi
YmFkMzM3NTY3YTRiZWEzNzIyNWYzODIyMTFhYTViLi4yMGVjMTVlNmJmOTlmOGVkNjkyZDBiYzJi
OWQyZGE1ZDBlN2Y4YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHN0cnVjdCBGZXRjaE9wdGlvbnM7CitzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CiAKQEAgLTgyLDYgKzgzLDggQEAgcHJpdmF0ZToKICAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7
CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsK
IAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pOworCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3Qg
V2ViUHJvY2VzcwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IDk5NDllM2Q0MzVmMjQ3YjUwYmZkNDQ0ZDUwNmRlMmE5NTI3ZGM1MmQuLmUzMTU4ZmM5MGIzNTc0
ZTRiODYwYmQyNDFjMjdhMWIwNDI2ZWI4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsNiAr
MzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gewogICAg
IE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFp
bSh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgU2V0U2NyaXB0UmVzb3Vy
Y2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlw
dFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcgbWltZVR5cGUpOwor
ICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3Jp
Z2luKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
aW5kZXggNDQ5MDFhOGMzODdiNzgwMDUwOTg3ZjlkYjE2NWY2NDQwZjJiMTQwYi4uNTFiM2U5MDgw
NjZlNWY4YzQxZWQ4MDFmNjFhZTliMTAxN2RmNDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDIs
MTYgKzE0Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2VzCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6b3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBjb25uZWN0aW9u
UmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KQogewot
ICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwotICAgIFJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KSkgewot
ICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKLSAgICAgICAgcmVnaXN0cmFi
bGVEb21haW4gPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNz
UHJveHkpLnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBjb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpLCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCByZWdpc3RyYWJsZURvbWFp
biB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2ViUHJvY2Vzc1Byb3h5
ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlvblJlcXVlc3RJZGVudGlm
aWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgeworICAgIGNvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nl
c3NJZGVudGlmaWVyKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdl
YlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25S
ZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTIwOSwx
MiArMTIwMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0U2FuZGJveEV4dGVuc2lv
bnNGb3JCbG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4pCi17Ci0gICAgbV9wcm9jZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLCBXVEY6Om51bGxvcHQpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxp
Y2l0U2Vzc2lvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgbV9w
cm9jZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXNzaW9uSUQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAppbmRleCA4MGRmZTYwYTI0ODQ0M2RkOTVkMWJlOTBhOWYxNDFiYzFiYmMxYmM5Li44OGRh
N2MwNGY2NjJjODdhYjgzMzQ5MmRiODg5MDk2NzdjNDYzOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjM4
LDggKzIzOCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKLSAgICB2b2lkIGVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwogI2VuZGlmCiAKICAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
c3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4g
cXVvdGEpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNGFmZTRiNWI3
MWFmNmI3ZDM0NWY1NmIwY2YxYzEzYWRkZjYzZTVhLi5hNmRiYjdjNWM5MzYzM2MyMTQ0ZmVkOWRm
OTY2OWYzYmY1M2FmNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02MSw4
ICs2MSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIg
ewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgZXhwbGljaXRTZXNz
aW9uKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4s
IHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1
aXJlZCkgLT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5k
ZXggOGIzYTQyY2QwNzFmNTQxZjMwNGUyNWE0YTNiMGNiZDUwNDUwNWU5MS4uYTRiYTkyYTkwOGY2
ZGI0MGRlN2U5OWNkMzkxZjVhYzY2ZGQxZmVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTc2LDkgKzc2LDkg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nl
c3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYKICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlh
bGl6YXRpb25EYXRhLmFkZCgicmVnaXN0cmFibGUtZG9tYWluIl9zLCByZWdpc3RyYWJsZURvbWFp
bigpLnN0cmluZygpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpzdGFy
dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgT3B0aW9uYWw8UEFMOjpTZXNzaW9u
SUQ+IGluaXRpYWxTZXNzaW9uSUQpCit2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0
YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0
UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1f
c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIGluaXRpYWxTZXNzaW9uSUQudmFsdWVPcihQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB9LCAwKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBt
X3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwg
cmVnaXN0cmFibGVEb21haW4oKSwgc2Vzc2lvbklEIH0sIDApOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHk6OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuaAppbmRleCBkODBjMWE1YjJiMDE2NjgwODliMzYxNDJlZjkxZTNkZDMyZmI0YWIxLi5lNjU2
NzU1MTk1M2UwMzY2ZTg0YzM4Y2E1NmY0ODY0NTE4MzlhNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC00MSw3ICs0
MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29y
a2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwogCi0gICAgdm9pZCBz
dGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+
IGluaXRpYWxTZXNzaW9uSUQpOworICAgIHZvaWQgc3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggZTMyZWI0Mzc2MzU0MGI5NmEwMTE4MzMzODQxMjFlZjAwOTNhNWI2Yi4uODE5NjcyY2Zh
OTE1ZjI5YjE5ODMyNDVlYzkyNjRjYjM5MzNhMDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm94CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHByb3h5LCAmcHJveHkgPT0gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSk7CiAKQEAgLTcxMCw5
ICs3MTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogCiAgICAgbV9tYXlIYXZlUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzLmNsZWFyKCk7CiAKLSAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJz
aXRlRGF0YVN0b3JlID0gbnVsbHB0cjsKLSAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICB3ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0
b3JlRm9yU2Vzc2lvbklEKCpzZXNzaW9uSUQpOworICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNp
dGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ05vbkRlZmF1bHREYXRhU3Rv
cmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIAogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkg
ewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGY5NDM2N2ZiYTljMWY2NmY0YjNjOTQwZGUxNjc0Yjhk
ZGE2YTU3YTQuLjBhNmQ4Y2VhZDUxNWEyNjFiZGNhN2NjMTQ1ZWM1ZGFiZDFiYzVkMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzgxLDcgKzM4MSw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpIGNvbnN0OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpT
ZXNzaW9uSUQ+KTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdvcmtl
clByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0KICAg
ICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29sIGFs
bG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFsbG93
czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGJmYzVmZDYyMDFlY2ZhOWEzMzc3NTBl
ZGVjMjEyZTI1M2IzMmEzYzUuLjYyMzI0MzBjNTkwMjc3MjkxODFhZDMyZjhlZWRmZWI0MTE0MDBj
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NsaWVudENv
bm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBhdXRvIHNlcnZpY2VX
b3JrZXJDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmdldChtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKTsKKyAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbiA9
IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwog
ICAgICAgICBpZiAoc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCiAgICAgICAgICAgICBzZXJ2aWNl
V29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgIHJldHVybjsKQEAgLTIwMiw4ICsyMDIsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGF1dG8gY29ubmVjdGlvbnMgPSBzdGQ6OmV4Y2hhbmdl
KG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllciwgeyB9KTsKLSAgICBmb3IgKGF1dG8mIGNvbm5l
Y3Rpb24gOiBjb25uZWN0aW9ucy52YWx1ZXMoKSkKKyAgICBhdXRvIHN3Q29ubmVjdGlvbnMgPSBz
dGQ6OmV4Y2hhbmdlKG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbiwgeyB9KTsKKyAgICBmb3IgKGF1
dG8mIGNvbm5lY3Rpb24gOiBzd0Nvbm5lY3Rpb25zLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0
aW9uLT5jb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCk7CiAjZW5kaWYKIH0KQEAgLTI2NywyOSArMjY3
LDEwIEBAIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzCiBXZWJTV0NsaWVudENvbm5lY3Rpb24mIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzVmFs
aWQoKSk7Ci0gICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZW5zdXJlKHNlc3Np
b25JRCwgW3Nlc3Npb25JRF0geworICAgIHJldHVybiAqbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9u
LmVuc3VyZShzZXNzaW9uSUQudG9VSW50NjQoKSwgW3Nlc3Npb25JRF0gewogICAgICAgICByZXR1
cm4gV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUoc2Vzc2lvbklEKTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVT
V0NsaWVudENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewot
ICAgIEFTU0VSVChtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIuY29udGFpbnMoY29ubmVjdGlv
bi5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKSk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25zQnlJ
ZGVudGlmaWVyLnJlbW92ZShjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkp
OwotfQotCi1TV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6aW5pdGlhbGl6ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkuaXNWYWxp
ZCgpKTsKLSAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAg
Ym9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rp
b24uc2Vzc2lvbklEKCkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbjo6UmVwbHkoaWRlbnRpZmllciksIDApOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgQVNTRVJUKCFtX3N3Q29ubmVj
dGlvbnNCeUlkZW50aWZpZXIuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fc3dDb25uZWN0
aW9uc0J5SWRlbnRpZmllci5hZGQoaWRlbnRpZmllciwgJmNvbm5lY3Rpb24pOwotCi0gICAgcmV0
dXJuIGlkZW50aWZpZXI7Ci19CiAjZW5kaWYKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5k
ZXggMDA3MWRiMWY3NmI2MGY2MTU1YWUwNGEzNmI2OGRiOTRiZjE2NzE2MS4uYzBhOGMzZjQ5NWZl
ZmMzNTVmZTZlYjY3ODRmZDVhMDFiNWRhZDkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAg
LTc2LDExICs3Niw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiogZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBtX3N3
Q29ubmVjdGlvbnNCeVNlc3Npb24uZ2V0KHNlc3Npb25JRCk7IH0KKyAgICBXZWJTV0NsaWVudENv
bm5lY3Rpb24qIGV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmdl
dChzZXNzaW9uSUQudG9VSW50NjQoKSk7IH0KICAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24mIHNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7Ci0KLSAgICBX
ZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGluaXRpYWxpemVTV0NsaWVudENv
bm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVTV0NsaWVu
dENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0aW9uJik7CiAjZW5kaWYKIAogcHJpdmF0ZToK
QEAgLTExMyw4ICsxMTAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYlNXQ2xpZW50
Q29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbjsKLSAgICBIYXNoTWFwPFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYlNXQ2xpZW50Q29ubmVjdGlvbio+
IG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8V2ViU1dDbGllbnRDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uOwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBlNzVlZWZhZDE1NDczYTcwYWNlZGJh
ODI2MzNiMDU0NDUwMWEyMmMwLi44YmI4MDcwZmI4ZDllZTEwMjcxYjk1N2Q1NGQ4YmRjNDAxZDkz
MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2guaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJTV09yaWdpblRhYmxlLmgi
CiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
ckNsaWVudERhdGEuaD4KQEAgLTU1LDc3ICs1Nyw2MSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogV2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24oU2Vzc2lv
bklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1faWRl
bnRpZmllcihtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
VHlwZT4oUHJvY2Vzczo6aWRlbnRpZmllcigpLnRvVUludDY0KCkpKQogICAgICwgbV9zd09yaWdp
blRhYmxlKG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJsZT4oKSkKIHsKICAgICBBU1NFUlQo
bV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVk
KCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbiB7IHNlc3Npb25JRCB9KTsKIH0KIAogV2ViU1dDbGll
bnRDb25uZWN0aW9uOjp+V2ViU1dDbGllbnRDb25uZWN0aW9uKCkKIHsKLSAgICBpZiAobV9jb25u
ZWN0aW9uKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVTV0NsaWVudENvbm5lY3Rpb24oKnRoaXMpOworICAgIGNs
ZWFyKCk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjppbml0aWFsaXplQ29ubmVj
dGlvbklmTmVlZGVkKCkKK0lQQzo6Q29ubmVjdGlvbiogV2ViU1dDbGllbnRDb25uZWN0aW9uOjpt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7
Ci0KLSAgICBtX2Nvbm5lY3Rpb24gPSAmbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rp
b24oKTsKLSAgICBtX2lkZW50aWZpZXIgPSBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaW5pdGlh
bGl6ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhpcyk7Ci0KLSAgICB1cGRhdGVUaHJvdHRsZVN0YXRl
KCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6ZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoY29uc3QgVSYgbWVzc2FnZSkKLXsKLSAgICBpbml0
aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAg
ICAgc2VuZChtZXNzYWdlKTsKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYkRhdGEpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U2NoZWR1bGVKb2JJblNlcnZlcihqb2JEYXRh
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpv
YkluU2VydmVyIHsgam9iRGF0YSB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JiByZXN1bHQpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihyZXN1bHQp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkZpbmlzaEZldGNo
aW5nU2NyaXB0SW5TZXJ2ZXIgeyByZXN1bHQgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBlbnN1cmVDb25uZWN0
aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoaWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6QWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2Vy
dmVyIHsgaWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJl
bW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRT
ZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpSZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2
ZXIgeyBpZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRp
b25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFNl
cnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlciB7IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwg
c291cmNlSWRlbnRpZmllciwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSB9LCAwKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3Vy
Y2VJZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNv
bnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xs
aW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdpbi5k
YXRhKCksIGRhdGEsIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIHVzZXJBZ2VudCB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdpbi5kYXRhKCksIGRhdGEs
IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHVzZXJBZ2Vu
dCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllcikKIHsKLSAg
ICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgY29udGV4dElkZW50aWZpZXIg
fSB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgeyBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllciB9IH0pOwogfQog
CiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21p
c2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogewotICAgIGVuc3Vy
ZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkRpZFJl
c29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGtleSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6RGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UgeyBrZXkgfSk7
CiB9CiAKIGJvb2wgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXlIYXZlU2VydmljZVdvcmtlclJl
Z2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pIGNvbnN0
CkBAIC0xNzYsMjUgKzE2MiwyNCBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hS
ZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjbwogICAgIHJ1bk9y
RGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0
b3BPcmlnaW4gPSBXVEZNb3ZlKHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKICAg
ICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmll
cjsKICAgICAgICAgbV9vbmdvaW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrcy5hZGQoY2FsbGJhY2tJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpNYXRjaFJlZ2lzdHJhdGlvbihjYWxsYmFj
a0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9u
OjpydW5PckRlbGF5VGFza0ZvckltcG9ydChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQor
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KEZ1bmN0
aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIGlmIChtX3N3T3JpZ2luVGFibGUtPmlzSW1wb3J0
ZWQoKSkgewogICAgICAgICB0YXNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV90
YXNrc1BlbmRpbmdPcmlnaW5JbXBvcnQuYXBwZW5kKFdURk1vdmUodGFzaykpOwotICAgIGluaXRp
YWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OndoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9y
aWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0Nh
bGxiYWNrSWRlbnRpZmllcjsKICAgICBtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRhc2tzLmFk
ZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFu
ZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2hlblJlZ2lzdHJhdGlvblJl
YWR5KGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVhZHkoY2FsbGJhY2tJ
RCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OnJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKQEAgLTIxNiwyOSAr
MjAxLDMyIEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uCiAgICAgcnVuT3JEZWxheVRhc2tGb3JJ
bXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IFdU
Rk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAgICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgICAgICBt
X29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLSAgICAgICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6R2V0UmVnaXN0cmF0aW9ucyhjYWxsYmFja0lELCB0b3BPcmlnaW4s
IGNsaWVudFVSTCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OkdldFJlZ2lzdHJhdGlvbnMgeyBjYWxsYmFja0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCB9
KTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2go
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyIH0p
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJl
cXVlc3QsIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5
KCkgfSwgcmVmZXJyZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5j
ZWxGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikK
IHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBmZXRjaElkZW50aWZpZXIgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBmZXRjaElkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpj
b250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UgeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlm
aWVyIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGlu
dWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24gPSBudWxs
cHRyOworICAgIGNsZWFyKCk7Cit9CiAKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjbGVh
cigpCit7CiAgICAgYXV0byByZWdpc3RyYXRpb25UYXNrcyA9IFdURk1vdmUobV9vbmdvaW5nTWF0
Y2hSZWdpc3RyYXRpb25UYXNrcyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHJlZ2lzdHJh
dGlvblRhc2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOwpAQCAt
MjQ3LDMxICsyMzUsMjYgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25U
b1NlcnZlckxvc3QoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBnZXRSZWdpc3RyYXRpb25U
YXNrcy52YWx1ZXMoKSkKICAgICAgICAgY2FsbGJhY2soeyB9KTsKIAorICAgIGF1dG8gcmVnaXN0
cmF0aW9uUmVhZHlUYXNrcyA9IFdURk1vdmUobV9vbmdvaW5nUmVnaXN0cmF0aW9uUmVhZHlUYXNr
cyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHJlZ2lzdHJhdGlvblJlYWR5VGFza3MudmFs
dWVzKCkpCisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisKICAgICBjbGVhclBlbmRpbmdKb2JzKCk7
CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgaW5pdGlhbGl6ZUNvbm5l
Y3Rpb25JZk5lZWRlZCgpOwotCi0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoaWRlbnRpZmllciksIE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50
OjpSZXBseSgpKTsKLX0KLQotV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QK
LXsKLSAgICBjb25zdF9jYXN0PFdlYlNXQ2xpZW50Q29ubmVjdGlvbio+KHRoaXMpLT5pbml0aWFs
aXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29y
a2VyRnJvbUNsaWVudCB7IGlkZW50aWZpZXIgfSwgTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQ6OlJlcGx5KCkpOwogfQogCiB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiB7CiAgICAgbV9p
c1Rocm90dGxlYWJsZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFyZUFsbFBhZ2VzVGhyb3R0
bGVhYmxlKCk7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6U2V0VGhyb3R0bGVTdGF0ZSB7IG1faXNUaHJvdHRsZWFibGUgfSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRl
IHsgbV9pc1Rocm90dGxlYWJsZSB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrKQogewotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsK
ICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
U3RvcmVSZWdpc3RyYXRpb25zT25EaXNrIHsgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oCmluZGV4IDNhZjQ5NWRjYTk0NGRlZGM5MWY1NDNjYmRkNjEzMWI3MDM5ZWI5
MjMuLmVmZWYzNmJjYWNkMjg1NDU3YmUwMTRmOGQ0Y2JjOWRhNjk5YzJmOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7IH0KICAg
ICB+V2ViU1dDbGllbnRDb25uZWN0aW9uKCk7CiAKLSAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgZmluYWw7
CisgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAg
ICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyKSBmaW5hbDsKQEAgLTc0LDggKzc0LDYgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTV0NsaWVudENvbm5lY3Rpb24oUEFMOjpTZXNzaW9u
SUQpOwogCi0gICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0KICAgICB2
b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRh
dGEmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0JikgZmluYWw7CiAgICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYs
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSkg
ZmluYWw7CkBAIC05NywyNyArOTUsMjYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2NoZWR1bGVT
dG9yYWdlSm9iKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CiAKLSAgICB2
b2lkIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
OworICAgIHZvaWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVuY3Rpb248dm9pZCgpPiYmIHRh
c2spOwogCi0gICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQotICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlm
aWVyLnRvVUludDY0KCk7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRC50b1VJbnQ2NCgpOyB9CiAK
ICAgICB2b2lkIHNldFNXT3JpZ2luVGFibGVTaGFyZWRNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5
OjpIYW5kbGUmKTsKICAgICB2b2lkIHNldFNXT3JpZ2luVGFibGVJc0ltcG9ydGVkKCk7CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKGNvbnN0
IFUmIG1lc3NhZ2UpOworICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1f
c2Vzc2lvbklEOwogICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogCi0gICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwog
ICAgIFVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPiBtX3N3T3JpZ2luVGFibGU7CiAKICAgICB1
aW50NjRfdCBtX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyIHsgMCB9OwogICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrPiBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlv
blRhc2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjaz4g
bV9vbmdvaW5nR2V0UmVnaXN0cmF0aW9uc1Rhc2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdo
ZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrPiBtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRh
c2tzOwotICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrc1BlbmRpbmdPcmln
aW5JbXBvcnQ7CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrc1BlbmRpbmdPcmln
aW5JbXBvcnQ7CiAgICAgYm9vbCBtX2lzVGhyb3R0bGVhYmxlIHsgdHJ1ZSB9OwogfTsgLy8gY2xh
c3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAppbmRleCBjOTI1N2FiNzVjY2EwMGVmMDkyNDBmZGU3OGM1MTI4NmQ4MGM3MWNlLi4xMDJk
NDU3MGVkZjQ1NmJiMzkwM2YwNmM2Zjc2OTViYzI3Y2IwMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCkBAIC04Niw4ICs4Niw5IEBAIFJlZjxEb2N1bWVudExvYWRlcj4g
U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBSCiAgICAgcmV0dXJuIFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3Rp
dHV0ZURhdGEpOwogfQogCi1XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1
aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIDogbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV9yZWdpc3RyYWJs
ZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAsIG1fcGFnZUdyb3VwSUQo
cGFnZUdyb3VwSUQpCiAgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQogICAg
ICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtOTgsNiArOTksNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVj
dGlvbgogI2VuZGlmCiB7CiAgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdG9yZSk7CisgICAg
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lz
dHJhYmxlRG9tYWluIH0sIDApOwogfQogCiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwpAQCAtMjU5LDkgKzI2
MSw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgc3luY1dvcmtlclRlcm1pbmF0aW9u
VGltZW91dCwgV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVz
c2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRl
bnRpZmllciwgc291cmNlT3JpZ2luKSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChzZXNzaW9uSUQsIGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKSwgMCk7CiB9CiAK
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwoT3B0
aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllciwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2Fz
U3VjY2Vzc2Z1bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDE2Y2MwZGVl
NzU4ODQwY2M4MmM0YzQyOGRiNDM4YzQyYmY5YzNjYmYuLmI1YTJjNjhhZTIwMWU1YWI3MjNjNjMw
MzMzMzE5OWYxZTUyYmUzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAt
NTMsNyArNTMsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAogY2xhc3MgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0
TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9u
PiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmKTsKICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNl
c1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAogICAgIC8vIFdlYkNvcmU6OlNX
Q29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24uCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmlu
YWw7CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBib29sIHdhc1N1Y2Nlc3NmdWwpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlv
bihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzZXRT
ZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgYm9vbCkgZmluYWw7CkBAIC05OSw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwogCiAgICAgUmVmPElQQzo6Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVpbnQ2NF90IG1fcGFnZUdy
b3VwSUQ7CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwogICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDY0YWUxMjBmOWI4OTY2YWMzMDNjNTVkOTQ3OTM0OTgwNzdi
NmQ4YzAuLjE3MDMwZTllMjliY2YzYzMwZWRmNjg5NWQ0NzM1ZjFlZTZlYjJhYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE4MTgsMTMgKzE4MTgsMTMgQEAg
TGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB9CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwg
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5p
dGlhbFNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogewogICAgIC8vIFdl
IGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBi
ZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCiAg
ICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4
dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9u
IGFzIHRoZQogICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0
aW9uIHB1cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJ
RCwgc3RvcmUpKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0
aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rp
b24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5
SUQsIHBhZ2VJRCwgc3RvcmUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4
IGVjMGZiZTIyYjllMzNmYTkwOTVmZTRhNWIyNjNkYjAxMmNlMDgyNDkuLmJlNzEzMDE1ODg0MDc4
YjM4NDVkYTJiYzE5YzI5MDU0ZTM3MjRkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtMzY1LDcgKzM2NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZGNl
ZTFmNDc0YzVhNmNmNjE5YTFiODZkMjg1NDAwYjA1ZGRlMzg1My4uZjQ0OWY1ZjQ5NzYyOTJjZGYw
NmI1ODFlODFjMmI0N2I0MTkxMjE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTExMSw3ICsxMTEsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxT
ZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gZG9tYWluLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogICAgIFJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378073</attachid>
            <date>2019-09-05 03:30:35 -0700</date>
            <delta_ts>2019-09-05 06:55:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190905123034.patch</filename>
            <type>text/plain</type>
            <size>85068</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I3YmFlM2MwYjZhOGE1
NThlOTY0NGY3ODQ3MzZhZmViNDEwMmNlZS4uODY3NjE3NmQ1YWFiZDdmOTBmMWY5MzJhMTMwZGRm
Nzk1Y2Q3ZTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92aW5nIFNX
IHRvIHByb2Nlc3NJZGVudGlmaWVyIC0gYWxtb3N0IHdvcmtpbmcgYnV0IHNlc3Npb24gSURzCisK
KyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lv
bklEIHRvIGVhc2UgTmV0d29ya1Byb2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2Vz
cyBjb25uZWN0aW9uLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIExl
dCBjb25uZWN0aW9uIGlkZW50aWZpZXIgYmUgc2V0IGluIGNvbnN0cnVjdG9yIGluc3RlYWQgb2Yg
Z2VuZXJhdGVkLgorCiAyMDE5LTA5LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnRyb2R1Y2UgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uIHRvIG1ha2Ug
U1dDbGllbnRDb25uZWN0aW9uIG1vbm8tdGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlNjgzMjIxNjAxNzFi
Zjg3NWRiNjYxZTQzZGQ2NzRiOGRmZTZjNmIuLjA2MzlkMDMzYzZlMmZmMjdhMmYxNDgxNGM5OTIw
ODNhYmVkYzk3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTExIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gYmUgc3RvcmVkIGluIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzCisgICAgICAgIFRoZXkgYXJlIG5vdyBrZXllZCBieSBzZXNzaW9uIElEcyBoZW5jZSB3aHkg
V2ViU1dDbGllbnRDb25uZWN0aW9uIGlzIHVzaW5nIHRoZSBzZXNzaW9uIElEIGFzIG1lc3NhZ2Ug
Y29ubmVjdGlvbiBJRC4KKyAgICAgICAgQ3JlYXRpb24gbm8gbG9uZ2VyIHJlcXVpcmVzIGEgc3lu
YyBJUEMgc2luY2UgdGhlIGNvbm5lY3Rpb24gaXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSBhIHNl
c3Npb24gSUQgYW5kIGEgcHJvY2VzcyBJRC4KKyAgICAgICAgVGhlc2UgSURzIGFyZSBzdGFibGUg
b3ZlciBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdpdGhpbiBOZXR3b3JrUHJvY2Vz
cywgYSBzZXJ2ZXIgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIGJ5IGEgU1dTZXJ2ZXIgd2hpY2ggaXMg
c2Vzc2lvbiBJRCBzcGVjaWZpYy4KKyAgICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgcHJvY2VzcyBp
ZGVudGlmaWVyIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAg
TW92ZSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gYmUgb3duZWQgYnkgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgaXQgYXQg
dGltZSBjb25uZWN0aW9uIHRvIHdlYnByb2Nlc3MgaXMgY3JlYXRlZCwgdXNlIGEgZGVkaWNhdGVk
IElQQyBtZXNzYWdlLgorICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uIG9uY2UgV2ViUHJvY2VzcyBhc2tzIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAgVGhpcyB3
aWxsIGFsbG93IGV4aXN0aW5nIFdlYlByb2Nlc3MgdG8gcnVuIHNlcnZpY2Ugd29ya2Vycy4KKyAg
ICAgICAgQSBtYXAgaXMgc3RpbGwga2VwdCBpbiBOZXR3b3JrIFByb2Nlc3MgdG8gcmV1c2UgY29u
dGV4dCBjb25uZWN0aW9ucyBzaW5jZSB0aGVzZSBjb25uZWN0aW9ucyBhcmUgbm90IHNlc3Npb25J
RCBzcGVjaWZpYy4KKworICAgICAgICBNaWdyYXRlIGZyb20gYSBzaW5nbGUgYm9vbGVhbiB0byBh
IEhhc2hTZXQgdG8gdHJhY2sgd2hldGhlciBzb21lIGNvbm5lY3Rpb25zIGFyZSBpbiB0aGUgcHJv
Y2VzcyBvZiBiZWluZyBjcmVhdGVkLgorICAgICAgICBQcmV2aW91c2x5IGlmIHR3byByZXF1ZXN0
cyB0byBjcmVhdGUgY29ubmVjdGlvbnMgd2VyZSBkb25lIHNob3J0bHkgb25lIGFmdGVyIHRoZSBv
dGhlciBvbiBkaWZmZXJlbnQgcmVnaXN0cmFibGUKKyAgICAgICAgZG9tYWlucywgdGhlIHNlY29u
ZCByZXF1ZXN0IHdvdWxkIG5vdCBiZSBwcm9jZXNzZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zm9yRWFj
aFNXU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJT
V1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dW5y
ZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpyZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JT
ZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZXhp
c3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6fldlYlNXQ2xpZW50Q29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnNjaGVkdWxlSm9iSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVtb3ZlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0Ns
aWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29u
bmVjdGlvblRvU2VydmVyTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5
bmNUZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246OnVwZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENv
bm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJBZ2VudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisKIDIwMTktMDktMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9iaWxlU2FmYXJpIG1heSBjcmFzaCB3aGVuIGludm9raW5nIHRoZSBDKysgbGFt
YmRhIGluIC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRl
eCA3MzkxYzRjMjFhMzZkNTBkNzdmMjA2ZDdiM2VlYmQwNWIwNjQwNGUwLi43NjBjNGNkMGEzYzZl
ZWQ3NWU4YTg2ODY2MmU5NWM0OTA1OTAxNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC05OSw5ICs5OSw5
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyBtZXNzYWdlID0geyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcG9ydHNPckV4
Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgIGF1dG8gc291cmNlSWRlbnRpZmll
ciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCku
aWRlbnRpZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW21lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50
aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRleHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgp
IG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IGNvbnRleHQuc2Vz
c2lvbklEKCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZp
ZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRl
eHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSkKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRp
Zmllciwgc291cmNlT3JpZ2luKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBt
ZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogICAgIH0pOwogCiAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmZTBjMDg0OTJjMzUyMTdhMjM2ZTIz
MmMwNmJjNWFiNjM2Nzg4NmExLi5mZmZiNzExZGUwYjJmZGZiN2RhYTkxZDk2MGU0NGEzYTlmOTEw
M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtl
clN0YXJ0ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChPcHRpb25hbDxTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0YWxs
KE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggOTMyNmEzYmFjNjU5
YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMC4uOWNkOGRlMGQwNzM1NzNkNWU4NTNjMzc5OTRi
YWM1MzU1ZTk5MjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgU2Vjb25kcyB0ZXJtaW5hdGlvbkRlbGF5IHsgMTBfcyB9OwogCi1TV1NlcnZl
cjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyKQorU1dTZXJ2ZXI6OkNv
bm5lY3Rpb246OkNvbm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZlciwgSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIDogbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9pZGVudGlmaWVyKFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCmluZGV4IDBjNTdhMzU3ZWZlM2VjYjRmNDE5N2NjOTFmMDg3MDIyMGI2
NjcwMGQuLmIzOTRlYmYzYTY1YWIxMDkwYmZhZDgyZTFlZDQ4ZDYwZTRiOTJmMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTU2
LDYgKzU2LDcgQEAgY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFz
cyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBT
ZXJ2aWNlV29ya2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1
Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0OwpAQCAtODYsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNv
bnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBjb25z
dCBTZXJ2aWNlV29ya2VyRGF0YSYgbmV3Q29udHJvbGxlcikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJ
ZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mKSA9IDA7CiAKQEAgLTkzLDcgKzk1LDcgQEAgcHVibGljOgogICAgICAg
ICBjb25zdCBTV1NlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29ubmVjdGlv
bihTV1NlcnZlciYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVy
JiwgSWRlbnRpZmllcik7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGFjM2EyMWExZDQ3OGU2NWIyNDFmNjUzODMzYjU5YjlmZjQ1M2Q0
MTEuLmIxY2QyY2Y5NzNjMTVjNjJkZWUzZGFjMjIxYTlmMjU2MjU4ODk5MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yMTQsMjEgKzIxNCwyMiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3RpbwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlv
biA9IG1fc3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAg
IGlmIChhdXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQoZGVjb2Rlci5kZXN0
aW5hdGlvbklEKCkpKQogICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRv
Q29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewotICAgICAgICAg
ICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOworICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgaWYg
KG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0
aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1f
bmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rp
b24oY29ubmVjdGlvbikpIHsKLSAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNl
aXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgQVNTRVJU
KG1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIGlmIChtX3N3Q29udGV4dENvbm5lY3Rp
b24pIHsKKyAgICAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZUZldGNo
VGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yNjksNyArMjcwLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmUKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dD
b25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIGlmIChhdXRv
IHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCkpKQogICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjg2
LDEwICsyODcsMTkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
IHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFJlZlB0cjxXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24+IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBtX25ldHdv
cmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNv
bm5lY3Rpb24pKSB7Ci0gICAgICAgIC8vIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgZXhpdGVkLgot
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Ns
b3NlZChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAg
ICByZXR1cm47CisgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBhdXRv
JiByZWdpc3RyYWJsZURvbWFpbiA9IG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+cmVnaXN0cmFibGVE
b21haW4oKTsKKworICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9z
ZWQoKTsKKworICAgICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEOworICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikg
eworICAgICAgICAgICAgc2VydmVyLm1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFibGVEb21haW5B
c1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICAgICAgaWYgKHNlcnZlci5u
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3Ry
YWJsZURvbWFpbikpCisgICAgICAgICAgICAgICAgc2Vzc2lvbklEID0gc2VydmVyLnNlc3Npb25J
RCgpOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHNlc3Npb25JRCkKKyAgICAgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFi
bGVEb21haW4sICpzZXNzaW9uSUQpOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOwpAQCAtODc4LDE4ICs4ODgsMjMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25u
ZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBhdXRvJiBzZXJ2ZXIgPSBt
X25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBhdXRv
IGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3Jr
UHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7Ci0gICAgCi0g
ICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKTsKLSAgICBMT0coU2VydmljZVdvcmtlciwgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24g
LSAlcyIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29u
bmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCk7CiAKLSAgICBBU1NFUlQoIW1fc3dDb25u
ZWN0aW9ucy5jb250YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOwotICAgIG1fc3dD
b25uZWN0aW9ucy5hZGQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1ha2VXZWFrUHRyKCpj
b25uZWN0aW9uKSk7CisgICAgQVNTRVJUKCFtX3N3Q29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lv
bklELnRvVUludDY0KCkpKTsKKyAgICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRC50b1VJ
bnQ2NCgpLCBtYWtlV2Vha1B0cigqY29ubmVjdGlvbikpOwogICAgIHNlcnZlci5hZGRDb25uZWN0
aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3Ms
IHJlZ2lzdHJhYmxlRG9tYWluLCBtX2Nvbm5lY3Rpb24uZ2V0KCkpOworCisgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+Zm9yRWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2ZXIpIHsKKyAgICAgICAgc2Vy
dmVyLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCptX3N3Q29udGV4dENvbm5lY3Rp
b24pOworICAgIH0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA0
MmMxN2UxYjA1YjQwNmIzOTRjOTU0YWI3OWMyYTM4NjQ5OTI0MTM0Li5lOGE1NmZkN2UyZDFkNTFl
ODM5MDI3NTc5MjZjN2Y5YTU0OTBmZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC02
OCw2ICs2OCw3IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xhc3MgTmV0d29ya1Nv
Y2tldFN0cmVhbTsKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDsKIGNsYXNzIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsK
IHR5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIAogbmFtZXNwYWNlIE5l
dHdvcmtDYWNoZSB7CkBAIC0yMDgsNyArMjA5LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0
aW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2
ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFNXQ29udGV4
dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyU1dDb25uZWN0aW9ucygpOwogI2VuZGlmCiAKQEAgLTMxOSw3ICszMjEsOCBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxX
ZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWFrUHRyPFdlYlNXU2VydmVy
Q29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWFr
UHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAgICBSZWZQdHI8
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmQwOTJmMzE0NzkzMjU0YzRmYjU0Nzk4
ZmI3ZTcwNjA3ZTM2YjY3MS4uNzc3YWRmYjdjYjQ5ZDdlNmFjYjEyNjc1ZjRjMWFjZjI5NWM5ZjRm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04MSw3
ICs4MSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChX
ZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKSBTeW5jaHJvbm91cworICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAjZW5kaWYKIAogICAgIENyZWF0ZU5l
d01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVy
IHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAx
NDM3ZDFhZTFjZDNlZmUwOTFiZDRkNTA4MzRlMjQwMjMyYjUxMjkxLi4xODcyNmY2ZTNkYmNiZjA0
ZWQzODIyZDBiOGYzN2JjOGU0YzE0MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjE1LDE3ICsyMTUsNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlcgogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAg
ICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7
Ci0gICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYXV0byogd2ViU1dDb25uZWN0aW9u
ID0gY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9u
KSkgewotICAgICAgICAgICAgd2ViU1dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LSNlbmRpZgogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CiB9CiAKQEAgLTQxNCw3ICs0MDMsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFs
PHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+
CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29u
bmVjdGlvblRvV2ViUHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDMx
LDI0ICs0MjAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudAogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoaXBjQ29ubmVjdGlvbi0+c2Vjb25kKSk7CiAKICAgICBjb25uZWN0aW9uLnNl
dE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7
Ci0gICAgCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChpc1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzKSB7Ci0gICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtl
ckVudGl0bGVtZW50KCkpOwotICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yU2VydmVyVG9Db250
ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0g
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMsIHJlZ2lzdHJhYmxl
RG9tYWluLCBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURv
bWFpbiksIGNvbnRleHRDb25uZWN0aW9uLmNvcHlSZWYoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0KLSAgICAgICAgbV93YWl0aW5n
Rm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKLQotICAgICAgICBm
b3IgKGF1dG8qIHNlcnZlciA6IFNXU2VydmVyOjphbGxTZXJ2ZXJzKCkpCi0gICAgICAgICAgICBz
ZXJ2ZXItPnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9u
KTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpc1NlcnZpY2VXb3JrZXJQcm9jZXNz
KTsKLSAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwotI2VuZGlmCiAKICAgICBt
X3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigp
KTsKIH0KQEAgLTIzOTAsMzYgKzIzNjEsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0U2Fu
ZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGUKICNl
bmRpZiAvLyBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6
Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCi17Ci0gICAgZm9yIChhdXRvJiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIDogbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBp
ZiAoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpID09ICZjb25uZWN0
aW9uKQotICAgICAgICAgICAgcmV0dXJuIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uZ2V0KCk7
Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpj
b25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCi17Ci0gICAgYXV0byYg
cmVnaXN0cmFibGVEb21haW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJs
ZURvbWFpbigpOwotICAgIAotICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rp
b25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdp
c3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2
ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JSZWdpc3Ry
YWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAgaWYg
KG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lz
dHJhYmxlRG9tYWluKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiQ29u
bmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxs
IG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKLSAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgV1RGOjpudWxsb3B0KTsKLSAgICB9Ci19Ci0K
LWJvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bikgY29uc3QKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmZvckVhY2hTV1NlcnZlcihjb25zdCBGdW5j
dGlvbjx2b2lkKFNXU2VydmVyJik+JiBjYWxsYmFjaykKIHsKLSAgICByZXR1cm4gV1RGOjphbnlP
ZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7Ci0gICAgICAgIHJl
dHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwotICAgIH0pOworICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKCpzZXJ2ZXIpOwog
fQogCiBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCkBAIC0yNDQ3LDQwICsyMzkyLDM2IEBAIFdlYlNXT3JpZ2luU3Rv
cmUqIE5ldHdvcmtQcm9jZXNzOjpleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklECiAgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4oc3dT
ZXJ2ZXItPm9yaWdpblN0b3JlKCkpOwogfQogCitib29sIE5ldHdvcmtQcm9jZXNzOjpuZWVkc1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6
YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsmXShhdXRvJiBzd1NlcnZlcikgeworICAgICAg
ICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9KTsKK30KKwogV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbikKIHsKICAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
cy5nZXQocmVnaXN0cmFibGVEb21haW4pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVh
dGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7Ci0gICAgaWYgKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0
aW9uKQorICAgIGlmIChtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3Ry
YWJsZURvbWFpbikpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX3dhaXRpbmdGb3JTZXJ2
ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7Ci0gICAgaWYgKHNlc3Npb25JRCkK
LSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKHJlZ2lzdHJhYmxlRG9tYWluLCAqc2Vzc2lvbklEKSwg
MCk7Ci0gICAgZWxzZQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MocmVnaXN0cmFibGVEb21haW4pLCAwKTsKLX0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKLXsKLSAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChkZXN0aW5hdGlvbklkZW50
aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5w
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuY29u
dGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJj
ZU9yaWdpbik7CisgICAgbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxl
RG9tYWluKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgc2Vzc2lvbklEIH0sIDApOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGll
bnRJZGVudGlmaWVyJiBzb3VyY2UsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgaWYgKGF1dG8gY29ubmVj
dGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoY29ubmVjdGlvbklkZW50aWZpZXIpKQot
ICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihkZXN0aW5hdGlv
biwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9
IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvbm5lY3Rpb24oZGVzdGluYXRpb25JZGVu
dGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLmNv
bnRleHRJZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3Vy
Y2VPcmlnaW4pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29u
bmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJU
KHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgQVNTRVJU
KCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkp
KTsKLSAgICBtX3N3U2VydmVyQ29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24uaWRlbnRpZmllcigp
LCBtYWtlV2Vha1B0cihjb25uZWN0aW9uKSk7CiAgICAgYXV0byogc3RvcmUgPSBleGlzdGluZ1NX
T3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpOwogICAgIEFTU0VS
VChzdG9yZSk7CiAgICAgaWYgKHN0b3JlKQpAQCAtMjQ4OSwyNiArMjQzMCwyMSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5l
Y3Rpb24mIGNvbm5lY3RpbwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2
ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKLSAgICBB
U1NFUlQobV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSku
Z2V0KCkgPT0gJmNvbm5lY3Rpb24pOwotICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5yZW1vdmUo
Y29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwogICAgIGlmIChhdXRvKiBzdG9yZSA9IGV4aXN0aW5n
U1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSkpCiAgICAgICAg
IHN0b3JlLT51bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpzd0NvbnRleHRDb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRl
ZChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24pCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8mIHJl
Z2lzdHJhYmxlRG9tYWluID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURv
bWFpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBu
byBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwotICAgIHNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24udGVybWluYXRlKCk7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1f
c3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JS
ZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgCi0g
ICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOworICAg
IEFTU0VSVCghbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9u
LnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5y
ZW1vdmUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb25u
ZWN0aW9uKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29udGV4dENv
bm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQorewor
ICAgIEFTU0VSVChtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uLnJl
Z2lzdHJhYmxlRG9tYWluKCkpID09ICZjb25uZWN0aW9uKTsKKyAgICBtX3NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAppbmRleCAwOTBkNDdmMDFhZDJkY2VkNDk5YWJlODk3ZjcwYjlhNGNlOTA3YzNhLi45ZDg4
NmZkODQyYmFlMGZhYTliZDg4ZjM1NTI3MDZlZmQ4ZmY2ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMDAsMTYgKzMwMCwxNyBAQCBw
dWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKLSAgICB2b2lkIGNyZWF0
ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOworICAgIHZvaWQgY3JlYXRlU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFBBTDo6
U2Vzc2lvbklEKTsKICAgICAKICAgICBXZWJDb3JlOjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9u
KFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXU2VydmVyQ29u
bmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKICAgICAKLSAgICB2b2lkIHN3Q29udGV4
dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYpOwotICAgIAotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVj
dGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsK
LSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJTV0NvbnRleHRD
b25uZWN0aW9uKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgdW5y
ZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Jik7CisKKyAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAg
dm9pZCBmb3JFYWNoU1dTZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpTV1NlcnZl
ciYpPiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzk1LDcgKzM5
Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lkIGluaXRpYWxp
emVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKLSAg
ICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRh
Y2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNl
dDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAt
NDY0LDEzICs0NjUsMTIgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBD
OjpBdHRhY2htZW50Jik7CiAgICAgCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
cihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9y
Q2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6
U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVz
dGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSwgV2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgCiAgICAgdm9pZCBkaXNhYmxlU2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgCiAgICAgV2ViU1dPcmlnaW5T
dG9yZSogZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCkgY29u
c3Q7Ci0gICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogCiAgICAg
dm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgU3RyaW5nJiBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmKTsKICNlbmRpZgpAQCAtNTQwLDEyICs1NDAsMTEgQEAgcHJpdmF0ZToKICAgICBMb2Nr
IG1fc3RvcmFnZVRhc2tNdXRleDsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUmVmUHRyPFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnM7Ci0gICAg
Ym9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNl
IH07CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAgICBi
b29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7
IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJh
c2VQYXRoczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4g
bV9zd1NlcnZlckNvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJmMjFhMmRjN2JhZGFmNjIwMzk1Y2QwNWM2MWVk
MjQxMjI5MzJmOWQuLmFiM2JhYmI0ODRlODdmYjMzMzczZDlhODk2YzI1MTJkMTk2NTFkMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHN0cnVjdCBX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9uIGZvciBjb21tdW5pY2F0aW9u
IHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFi
bGVEb21haW4pIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlm
aWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8SVBD
OjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllcikgQXN5bmMKIAogI2lmIFVTRShTT1VQ
KQogICAgIFNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKQEAgLTE1Mywx
MCArMTUzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFNldENhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBoYW5kbGUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQotCi0gICAgUG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVz
dGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdl
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKLQor
ICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
IG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZp
ZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheSgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAppbmRleCA2YmNiOTlhMTAwZjg2YjY5OWM3NzE1ZDViNWY0NGY4ZWFmNjg1ZmJh
Li45M2JmNTE5ODc2NzYxZjA3MzAxZjRiMGJmMjI0ZTc2N2FlNGE4ZDY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNjEsOCArNjEsOCBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJ
T05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3Jr
ZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdT
X18pCiAKLVdlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgU1dTZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24oc2VydmVyKQorV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBTV1NlcnZlciYgc2VydmVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVu
dGlmaWVyLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIDogU1dTZXJ2ZXI6OkNvbm5lY3Rpb24o
c2VydmVyLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
VHlwZT4ocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSkpCiAgICAgLCBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCiAgICAgLCBtX2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBt
X25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpAQCAtMjUzLDEzICsyNTMsMTMgQEAgdm9p
ZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoU2VydmljZVdvcmtl
ckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIHNlcnZlcigpLnNjaGVkdWxlSm9iKFdURk1vdmUoam9i
RGF0YSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElk
ZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
Cit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIGNv
bnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKICAg
ICBhdXRvKiBzb3VyY2VTZXJ2aWNlV29ya2VyID0gc2VydmVyKCkud29ya2VyQnlJRChzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICBpZiAoIXNvdXJjZVNlcnZpY2VXb3JrZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VTZXJ2aWNlV29ya2VyLT5kYXRhKCksIHNvdXJjZU9yaWdp
biB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50IHsgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwg
bWVzc2FnZSwgc291cmNlU2VydmljZVdvcmtlci0+ZGF0YSgpLCBzb3VyY2VPcmlnaW4gfSk7CiB9
CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRf
dCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggOTAwMjNkNjYxODRmZDJkMTg3MWQ0NDg5NjE3YTBmOWY2
NzJhMDI4Yi4uYWRlOGU3ZTNhNjMwYzYxNTBiOTFhYTlhYjIwMzA2NjU1NjljNzc1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTMs
NyArNTQsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgot
ICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlNXU2Vy
dmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIFdlYlNXU2VydmVy
Q29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlNXU2VydmVyJiwgSVBDOjpDb25u
ZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKICAg
ICBXZWJTV1NlcnZlckNvbm5lY3Rpb24oY29uc3QgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJikgPSBk
ZWxldGU7CiAgICAgfldlYlNXU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsOwogCkBAIC02NCw5ICs2
NSw2IEBAIHB1YmxpYzoKIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRleHRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7Ci0KIHByaXZhdGU6CiAgICAgLy8gSW1wbGVt
ZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nl
c3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9i
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpIGZpbmFsOwpAQCAtOTQs
NiArOTIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKICAgICB2
b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
ciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZVNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7
CisKICAgICB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpIGZpbmFsOwogCiAgICAgYm9vbCBpc1Rocm90dGxl
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRsZWFibGU7IH0KQEAgLTEwMiw4ICsxMDIs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxl
YWJsZSk7CiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKKyAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRl
c3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UpOworCiAgICAgSVBD
OjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7IH0KLSAgICB1aW50NjRfdCBtZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpOyB9CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRC50b1VJbnQ2NCgpOyB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoV2ViQ29y
ZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgVSYmIG1lc3NhZ2UpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGJm
ZTQwM2RmNWViYTI4OTQ2OTc1N2MzMDQ4MTgxNGRlNmI1YTczMzAuLjdiMWU5MjA3MTA5Y2QxNDUw
NzZiOWFhNzIwMDk5NTExOWYzOGJlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsOSArNDYsMTMgQEAgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
TmV0d29ya1Byb2Nlc3MmIG4KICAgICAsIG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rp
b24pKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKIHsKKyAgICBtX25l
dHdvcmtQcm9jZXNzLT5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOwogfQogCi1X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKSA9IGRlZmF1bHQ7CitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnVu
cmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KIAogSVBDOjpDb25uZWN0aW9u
KiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKIHsKQEAgLTY1LDYgKzcxLDEyIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkKCkKICAgICAgICAgZmV0Y2gtPmZhaWwoUmVzb3Vy
Y2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29y
a2VyIGNvbnRleHQgY2xvc2VkIl9zIH0pOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX25ldHdvcmtQcm9j
ZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jb25uZWN0aW9uKGRlc3RpbmF0aW9u
SWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rp
b24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmll
ci5jb250ZXh0SWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3Jp
Z2luKTsKK30KKwogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omluc3RhbGxT
ZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Okluc3RhbGxT
ZXJ2aWNlV29ya2VyIHsgZGF0YSwgc2Vzc2lvbklELCB1c2VyQWdlbnQgfSk7CkBAIC0xMTcsNyAr
MTI5LDE3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hT
a2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKQogewotICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCp0
aGlzKTsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2Vzcy0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtl
ciBwcm9jZXNzIGlzIG5vIGxvbmdlciBuZWVkZWQsIHRlcm1pbmF0aW5nIGl0Iik7CisgICAgdGVy
bWluYXRlKCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1
dG8mIHNlcnZlcikgeworICAgICAgICBzZXJ2ZXIubWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJs
ZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICB9KTsKKworICAg
IGNvbm5lY3Rpb25DbG9zZWQoKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA5MGEwN2VhMjRi
YmFkMzM3NTY3YTRiZWEzNzIyNWYzODIyMTFhYTViLi4yMGVjMTVlNmJmOTlmOGVkNjkyZDBiYzJi
OWQyZGE1ZDBlN2Y4YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHN0cnVjdCBGZXRjaE9wdGlvbnM7CitzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CiAKQEAgLTgyLDYgKzgzLDggQEAgcHJpdmF0ZToKICAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7
CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsK
IAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pOworCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3Qg
V2ViUHJvY2VzcwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IDk5NDllM2Q0MzVmMjQ3YjUwYmZkNDQ0ZDUwNmRlMmE5NTI3ZGM1MmQuLmUzMTU4ZmM5MGIzNTc0
ZTRiODYwYmQyNDFjMjdhMWIwNDI2ZWI4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsNiAr
MzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gewogICAg
IE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFp
bSh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgU2V0U2NyaXB0UmVzb3Vy
Y2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlw
dFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcgbWltZVR5cGUpOwor
ICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3Jp
Z2luKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
aW5kZXggNDQ5MDFhOGMzODdiNzgwMDUwOTg3ZjlkYjE2NWY2NDQwZjJiMTQwYi4uNTFiM2U5MDgw
NjZlNWY4YzQxZWQ4MDFmNjFhZTliMTAxN2RmNDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDIs
MTYgKzE0Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2VzCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6b3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBjb25uZWN0aW9u
UmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KQogewot
ICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwotICAgIFJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KSkgewot
ICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKLSAgICAgICAgcmVnaXN0cmFi
bGVEb21haW4gPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNz
UHJveHkpLnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBjb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpLCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCByZWdpc3RyYWJsZURvbWFp
biB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2ViUHJvY2Vzc1Byb3h5
ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlvblJlcXVlc3RJZGVudGlm
aWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgeworICAgIGNvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nl
c3NJZGVudGlmaWVyKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdl
YlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25S
ZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTIwOSwx
MiArMTIwMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0U2FuZGJveEV4dGVuc2lv
bnNGb3JCbG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4pCi17Ci0gICAgbV9wcm9jZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLCBXVEY6Om51bGxvcHQpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxp
Y2l0U2Vzc2lvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgbV9w
cm9jZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXNzaW9uSUQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAppbmRleCA4MGRmZTYwYTI0ODQ0M2RkOTVkMWJlOTBhOWYxNDFiYzFiYmMxYmM5Li44OGRh
N2MwNGY2NjJjODdhYjgzMzQ5MmRiODg5MDk2NzdjNDYzOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjM4
LDggKzIzOCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKLSAgICB2b2lkIGVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwogI2VuZGlmCiAKICAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
c3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4g
cXVvdGEpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNGFmZTRiNWI3
MWFmNmI3ZDM0NWY1NmIwY2YxYzEzYWRkZjYzZTVhLi5hNmRiYjdjNWM5MzYzM2MyMTQ0ZmVkOWRm
OTY2OWYzYmY1M2FmNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02MSw4
ICs2MSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIg
ewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgZXhwbGljaXRTZXNz
aW9uKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4s
IHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1
aXJlZCkgLT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5k
ZXggOGIzYTQyY2QwNzFmNTQxZjMwNGUyNWE0YTNiMGNiZDUwNDUwNWU5MS4uYTRiYTkyYTkwOGY2
ZGI0MGRlN2U5OWNkMzkxZjVhYzY2ZGQxZmVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTc2LDkgKzc2LDkg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nl
c3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYKICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlh
bGl6YXRpb25EYXRhLmFkZCgicmVnaXN0cmFibGUtZG9tYWluIl9zLCByZWdpc3RyYWJsZURvbWFp
bigpLnN0cmluZygpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpzdGFy
dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgT3B0aW9uYWw8UEFMOjpTZXNzaW9u
SUQ+IGluaXRpYWxTZXNzaW9uSUQpCit2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0
YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0
UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1f
c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIGluaXRpYWxTZXNzaW9uSUQudmFsdWVPcihQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB9LCAwKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBt
X3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwg
cmVnaXN0cmFibGVEb21haW4oKSwgc2Vzc2lvbklEIH0sIDApOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHk6OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuaAppbmRleCBkODBjMWE1YjJiMDE2NjgwODliMzYxNDJlZjkxZTNkZDMyZmI0YWIxLi5lNjU2
NzU1MTk1M2UwMzY2ZTg0YzM4Y2E1NmY0ODY0NTE4MzlhNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC00MSw3ICs0
MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29y
a2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwogCi0gICAgdm9pZCBz
dGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+
IGluaXRpYWxTZXNzaW9uSUQpOworICAgIHZvaWQgc3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggZTMyZWI0Mzc2MzU0MGI5NmEwMTE4MzMzODQxMjFlZjAwOTNhNWI2Yi4uODE5NjcyY2Zh
OTE1ZjI5YjE5ODMyNDVlYzkyNjRjYjM5MzNhMDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlBy
b2Nlc3NQcm94CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHByb3h5LCAmcHJveHkgPT0gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSk7CiAKQEAgLTcxMCw5
ICs3MTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogCiAgICAgbV9tYXlIYXZlUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzLmNsZWFyKCk7CiAKLSAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJz
aXRlRGF0YVN0b3JlID0gbnVsbHB0cjsKLSAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICB3ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0
b3JlRm9yU2Vzc2lvbklEKCpzZXNzaW9uSUQpOworICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNp
dGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ05vbkRlZmF1bHREYXRhU3Rv
cmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIAogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkg
ewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGY5NDM2N2ZiYTljMWY2NmY0YjNjOTQwZGUxNjc0Yjhk
ZGE2YTU3YTQuLjBhNmQ4Y2VhZDUxNWEyNjFiZGNhN2NjMTQ1ZWM1ZGFiZDFiYzVkMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzgxLDcgKzM4MSw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpIGNvbnN0OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpT
ZXNzaW9uSUQ+KTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdvcmtl
clByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0KICAg
ICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29sIGFs
bG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFsbG93
czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGJmYzVmZDYyMDFlY2ZhOWEzMzc3NTBl
ZGVjMjEyZTI1M2IzMmEzYzUuLjYyMzI0MzBjNTkwMjc3MjkxODFhZDMyZjhlZWRmZWI0MTE0MDBj
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NsaWVudENv
bm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBhdXRvIHNlcnZpY2VX
b3JrZXJDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmdldChtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKTsKKyAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbiA9
IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwog
ICAgICAgICBpZiAoc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCiAgICAgICAgICAgICBzZXJ2aWNl
V29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgIHJldHVybjsKQEAgLTIwMiw4ICsyMDIsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGF1dG8gY29ubmVjdGlvbnMgPSBzdGQ6OmV4Y2hhbmdl
KG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllciwgeyB9KTsKLSAgICBmb3IgKGF1dG8mIGNvbm5l
Y3Rpb24gOiBjb25uZWN0aW9ucy52YWx1ZXMoKSkKKyAgICBhdXRvIHN3Q29ubmVjdGlvbnMgPSBz
dGQ6OmV4Y2hhbmdlKG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbiwgeyB9KTsKKyAgICBmb3IgKGF1
dG8mIGNvbm5lY3Rpb24gOiBzd0Nvbm5lY3Rpb25zLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0
aW9uLT5jb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCk7CiAjZW5kaWYKIH0KQEAgLTI2NywyOSArMjY3
LDEwIEBAIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzCiBXZWJTV0NsaWVudENvbm5lY3Rpb24mIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzVmFs
aWQoKSk7Ci0gICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZW5zdXJlKHNlc3Np
b25JRCwgW3Nlc3Npb25JRF0geworICAgIHJldHVybiAqbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9u
LmVuc3VyZShzZXNzaW9uSUQudG9VSW50NjQoKSwgW3Nlc3Npb25JRF0gewogICAgICAgICByZXR1
cm4gV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUoc2Vzc2lvbklEKTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVT
V0NsaWVudENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewot
ICAgIEFTU0VSVChtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIuY29udGFpbnMoY29ubmVjdGlv
bi5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKSk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25zQnlJ
ZGVudGlmaWVyLnJlbW92ZShjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkp
OwotfQotCi1TV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6aW5pdGlhbGl6ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkuaXNWYWxp
ZCgpKTsKLSAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAg
Ym9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rp
b24uc2Vzc2lvbklEKCkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbjo6UmVwbHkoaWRlbnRpZmllciksIDApOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgQVNTRVJUKCFtX3N3Q29ubmVj
dGlvbnNCeUlkZW50aWZpZXIuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fc3dDb25uZWN0
aW9uc0J5SWRlbnRpZmllci5hZGQoaWRlbnRpZmllciwgJmNvbm5lY3Rpb24pOwotCi0gICAgcmV0
dXJuIGlkZW50aWZpZXI7Ci19CiAjZW5kaWYKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5k
ZXggMDA3MWRiMWY3NmI2MGY2MTU1YWUwNGEzNmI2OGRiOTRiZjE2NzE2MS4uYzBhOGMzZjQ5NWZl
ZmMzNTVmZTZlYjY3ODRmZDVhMDFiNWRhZDkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAg
LTc2LDExICs3Niw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiogZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBtX3N3
Q29ubmVjdGlvbnNCeVNlc3Npb24uZ2V0KHNlc3Npb25JRCk7IH0KKyAgICBXZWJTV0NsaWVudENv
bm5lY3Rpb24qIGV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmdl
dChzZXNzaW9uSUQudG9VSW50NjQoKSk7IH0KICAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24mIHNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7Ci0KLSAgICBX
ZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGluaXRpYWxpemVTV0NsaWVudENv
bm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVTV0NsaWVu
dENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0aW9uJik7CiAjZW5kaWYKIAogcHJpdmF0ZToK
QEAgLTExMyw4ICsxMTAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYlNXQ2xpZW50
Q29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbjsKLSAgICBIYXNoTWFwPFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYlNXQ2xpZW50Q29ubmVjdGlvbio+
IG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8V2ViU1dDbGllbnRDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uOwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBlNzVlZWZhZDE1NDczYTcwYWNlZGJh
ODI2MzNiMDU0NDUwMWEyMmMwLi44YmI4MDcwZmI4ZDllZTEwMjcxYjk1N2Q1NGQ4YmRjNDAxZDkz
MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2guaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJTV09yaWdpblRhYmxlLmgi
CiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
ckNsaWVudERhdGEuaD4KQEAgLTU1LDc3ICs1Nyw2MSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogV2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24oU2Vzc2lv
bklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1faWRl
bnRpZmllcihtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
VHlwZT4oUHJvY2Vzczo6aWRlbnRpZmllcigpLnRvVUludDY0KCkpKQogICAgICwgbV9zd09yaWdp
blRhYmxlKG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJsZT4oKSkKIHsKICAgICBBU1NFUlQo
bV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVk
KCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbiB7IHNlc3Npb25JRCB9KTsKIH0KIAogV2ViU1dDbGll
bnRDb25uZWN0aW9uOjp+V2ViU1dDbGllbnRDb25uZWN0aW9uKCkKIHsKLSAgICBpZiAobV9jb25u
ZWN0aW9uKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVTV0NsaWVudENvbm5lY3Rpb24oKnRoaXMpOworICAgIGNs
ZWFyKCk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjppbml0aWFsaXplQ29ubmVj
dGlvbklmTmVlZGVkKCkKK0lQQzo6Q29ubmVjdGlvbiogV2ViU1dDbGllbnRDb25uZWN0aW9uOjpt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7
Ci0KLSAgICBtX2Nvbm5lY3Rpb24gPSAmbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rp
b24oKTsKLSAgICBtX2lkZW50aWZpZXIgPSBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaW5pdGlh
bGl6ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhpcyk7Ci0KLSAgICB1cGRhdGVUaHJvdHRsZVN0YXRl
KCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6ZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoY29uc3QgVSYgbWVzc2FnZSkKLXsKLSAgICBpbml0
aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAg
ICAgc2VuZChtZXNzYWdlKTsKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYkRhdGEpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U2NoZWR1bGVKb2JJblNlcnZlcihqb2JEYXRh
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpv
YkluU2VydmVyIHsgam9iRGF0YSB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JiByZXN1bHQpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihyZXN1bHQp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkZpbmlzaEZldGNo
aW5nU2NyaXB0SW5TZXJ2ZXIgeyByZXN1bHQgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBlbnN1cmVDb25uZWN0
aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoaWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6QWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2Vy
dmVyIHsgaWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJl
bW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRT
ZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpSZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2
ZXIgeyBpZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRp
b25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFNl
cnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlciB7IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwg
c291cmNlSWRlbnRpZmllciwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSB9LCAwKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3Vy
Y2VJZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNv
bnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xs
aW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdpbi5k
YXRhKCksIGRhdGEsIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIHVzZXJBZ2VudCB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdpbi5kYXRhKCksIGRhdGEs
IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHVzZXJBZ2Vu
dCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllcikKIHsKLSAg
ICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgY29udGV4dElkZW50aWZpZXIg
fSB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgeyBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllciB9IH0pOwogfQog
CiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21p
c2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogewotICAgIGVuc3Vy
ZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkRpZFJl
c29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGtleSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6RGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UgeyBrZXkgfSk7
CiB9CiAKIGJvb2wgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXlIYXZlU2VydmljZVdvcmtlclJl
Z2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pIGNvbnN0
CkBAIC0xNzYsMjUgKzE2MiwyNCBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hS
ZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjbwogICAgIHJ1bk9y
RGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0
b3BPcmlnaW4gPSBXVEZNb3ZlKHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKICAg
ICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmll
cjsKICAgICAgICAgbV9vbmdvaW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrcy5hZGQoY2FsbGJhY2tJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpNYXRjaFJlZ2lzdHJhdGlvbihjYWxsYmFj
a0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9u
OjpydW5PckRlbGF5VGFza0ZvckltcG9ydChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQor
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KEZ1bmN0
aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIGlmIChtX3N3T3JpZ2luVGFibGUtPmlzSW1wb3J0
ZWQoKSkgewogICAgICAgICB0YXNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV90
YXNrc1BlbmRpbmdPcmlnaW5JbXBvcnQuYXBwZW5kKFdURk1vdmUodGFzaykpOwotICAgIGluaXRp
YWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OndoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9y
aWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0Nh
bGxiYWNrSWRlbnRpZmllcjsKICAgICBtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRhc2tzLmFk
ZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFu
ZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2hlblJlZ2lzdHJhdGlvblJl
YWR5KGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVhZHkoY2FsbGJhY2tJ
RCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OnJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKQEAgLTIxNiwyOSAr
MjAxLDMyIEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uCiAgICAgcnVuT3JEZWxheVRhc2tGb3JJ
bXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IFdU
Rk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAgICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgICAgICBt
X29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLSAgICAgICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6R2V0UmVnaXN0cmF0aW9ucyhjYWxsYmFja0lELCB0b3BPcmlnaW4s
IGNsaWVudFVSTCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OkdldFJlZ2lzdHJhdGlvbnMgeyBjYWxsYmFja0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCB9
KTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2go
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyIH0p
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJl
cXVlc3QsIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5
KCkgfSwgcmVmZXJyZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5j
ZWxGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikK
IHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBmZXRjaElkZW50aWZpZXIgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBmZXRjaElkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpj
b250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UgeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlm
aWVyIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGlu
dWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0
aW9uOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24gPSBudWxs
cHRyOworICAgIGNsZWFyKCk7Cit9CiAKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjbGVh
cigpCit7CiAgICAgYXV0byByZWdpc3RyYXRpb25UYXNrcyA9IFdURk1vdmUobV9vbmdvaW5nTWF0
Y2hSZWdpc3RyYXRpb25UYXNrcyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHJlZ2lzdHJh
dGlvblRhc2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOwpAQCAt
MjQ3LDMxICsyMzUsMjYgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25U
b1NlcnZlckxvc3QoKQogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBnZXRSZWdpc3RyYXRpb25U
YXNrcy52YWx1ZXMoKSkKICAgICAgICAgY2FsbGJhY2soeyB9KTsKIAorICAgIGF1dG8gcmVnaXN0
cmF0aW9uUmVhZHlUYXNrcyA9IFdURk1vdmUobV9vbmdvaW5nUmVnaXN0cmF0aW9uUmVhZHlUYXNr
cyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHJlZ2lzdHJhdGlvblJlYWR5VGFza3MudmFs
dWVzKCkpCisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisKICAgICBjbGVhclBlbmRpbmdKb2JzKCk7
CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgaW5pdGlhbGl6ZUNvbm5l
Y3Rpb25JZk5lZWRlZCgpOwotCi0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoaWRlbnRpZmllciksIE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50
OjpSZXBseSgpKTsKLX0KLQotV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QK
LXsKLSAgICBjb25zdF9jYXN0PFdlYlNXQ2xpZW50Q29ubmVjdGlvbio+KHRoaXMpLT5pbml0aWFs
aXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29y
a2VyRnJvbUNsaWVudCB7IGlkZW50aWZpZXIgfSwgTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQ6OlJlcGx5KCkpOwogfQogCiB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiB7CiAgICAgbV9p
c1Rocm90dGxlYWJsZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFyZUFsbFBhZ2VzVGhyb3R0
bGVhYmxlKCk7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6U2V0VGhyb3R0bGVTdGF0ZSB7IG1faXNUaHJvdHRsZWFibGUgfSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRl
IHsgbV9pc1Rocm90dGxlYWJsZSB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrKQogewotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsK
ICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
U3RvcmVSZWdpc3RyYXRpb25zT25EaXNrIHsgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oCmluZGV4IDNhZjQ5NWRjYTk0NGRlZGM5MWY1NDNjYmRkNjEzMWI3MDM5ZWI5
MjMuLmVmZWYzNmJjYWNkMjg1NDU3YmUwMTRmOGQ0Y2JjOWRhNjk5YzJmOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7IH0KICAg
ICB+V2ViU1dDbGllbnRDb25uZWN0aW9uKCk7CiAKLSAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgZmluYWw7
CisgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAg
ICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyKSBmaW5hbDsKQEAgLTc0LDggKzc0LDYgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJTV0NsaWVudENvbm5lY3Rpb24oUEFMOjpTZXNzaW9u
SUQpOwogCi0gICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0KICAgICB2
b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRh
dGEmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0JikgZmluYWw7CiAgICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYs
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSkg
ZmluYWw7CkBAIC05NywyNyArOTUsMjYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2NoZWR1bGVT
dG9yYWdlSm9iKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CiAKLSAgICB2
b2lkIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
OworICAgIHZvaWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVuY3Rpb248dm9pZCgpPiYmIHRh
c2spOwogCi0gICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQotICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlm
aWVyLnRvVUludDY0KCk7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRC50b1VJbnQ2NCgpOyB9CiAK
ICAgICB2b2lkIHNldFNXT3JpZ2luVGFibGVTaGFyZWRNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5
OjpIYW5kbGUmKTsKICAgICB2b2lkIHNldFNXT3JpZ2luVGFibGVJc0ltcG9ydGVkKCk7CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKGNvbnN0
IFUmIG1lc3NhZ2UpOworICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1f
c2Vzc2lvbklEOwogICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogCi0gICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwog
ICAgIFVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPiBtX3N3T3JpZ2luVGFibGU7CiAKICAgICB1
aW50NjRfdCBtX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyIHsgMCB9OwogICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrPiBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlv
blRhc2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjaz4g
bV9vbmdvaW5nR2V0UmVnaXN0cmF0aW9uc1Rhc2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdo
ZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrPiBtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRh
c2tzOwotICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrc1BlbmRpbmdPcmln
aW5JbXBvcnQ7CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrc1BlbmRpbmdPcmln
aW5JbXBvcnQ7CiAgICAgYm9vbCBtX2lzVGhyb3R0bGVhYmxlIHsgdHJ1ZSB9OwogfTsgLy8gY2xh
c3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAppbmRleCBjOTI1N2FiNzVjY2EwMGVmMDkyNDBmZGU3OGM1MTI4NmQ4MGM3MWNlLi5mMjJj
YTNjMTMyNTczMjgxMDQ3ODU5MGU2NDdiYmY3ZWMxMmFlYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckZldGNoVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlk
ZXIuaCIKQEAgLTg2LDggKzg3LDkgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBTZXJ2aWNlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFIKICAgICByZXR1
cm4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9
CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VH
cm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1v
dmUocmVnaXN0cmFibGVEb21haW4pKQogICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkK
ICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCiAgICAgLCBtX3BhZ2VJRChw
YWdlSUQpCkBAIC05OCw2ICsxMDAsNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgogI2VuZGlm
CiB7CiAgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdG9yZSk7CisgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWlu
IH0sIDApOwogfQogCiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwpAQCAtMjU5LDkgKzI2Miw5IEBAIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS50ZXJt
aW5hdGVXb3JrZXIoaWRlbnRpZmllciwgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgV1RG
TW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291
cmNlT3JpZ2luKSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudChzZXNzaW9uSUQsIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2Fn
ZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwoT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDE2Y2MwZGVlNzU4ODQwY2M4MmM0
YzQyOGRiNDM4YzQyYmY5YzNjYmYuLmI1YTJjNjhhZTIwMWU1YWI3MjNjNjMwMzMzMzE5OWYxZTUy
YmUzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNTMsNyArNTMsNyBA
QCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAogY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29u
bmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCB1aW50NjRf
dCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAg
ICB+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC02NSw3
ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAogICAgIC8vIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFn
ZXI6OkNvbm5lY3Rpb24uCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRp
b25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGaW5pc2hJbnN0YWxsKE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1
Y2Nlc3NmdWwpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2Vy
SGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkg
ZmluYWw7CkBAIC05OSw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRUaHJvdHRsZVN0
YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBtX3JlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVpbnQ2NF90IG1fcGFnZUdyb3VwSUQ7CiAgICAg
V2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dlYlBhZ2VQcm94eUlEOwogICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IDY0YWUxMjBmOWI4OTY2YWMzMDNjNTVkOTQ3OTM0OTgwNzdiNmQ4YzAuLjE3MDMw
ZTllMjliY2YzYzMwZWRmNjg5NWQ0NzM1ZjFlZTZlYjJhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE4MTgsMTMgKzE4MTgsMTMgQEAgTGliV2ViUlRDTmV0
d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25J
RCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQ
QUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogewogICAgIC8vIFdlIGFyZSBpbiB0aGUg
U2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxp
c2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCiAgICAgLy8gYnkgY2Fs
bGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVl
ZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQogICAg
IC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2Vz
LgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0
Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGND
b25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUpKTsK
KyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlx
dWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwg
c3RvcmUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGVjMGZiZTIyYjll
MzNmYTkwOTVmZTRhNWIyNjNkYjAxMmNlMDgyNDkuLmJlNzEzMDE1ODg0MDc4YjM4NDVkYTJiYzE5
YzI5MDU0ZTM3MjRkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
MzY1LDcgKzM2NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNl
c3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZGNlZTFmNDc0YzVhNmNm
NjE5YTFiODZkMjg1NDAwYjA1ZGRlMzg1My4uZjQ0OWY1ZjQ5NzYyOTJjZGYwNmI1ODFlODFjMmI0
N2I0MTkxMjE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTExMSw3ICsxMTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRf
dCBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCisg
ICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2
NF90IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWlu
LCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogICAgIFJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudHMoKQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378078</attachid>
            <date>2019-09-05 06:55:57 -0700</date>
            <delta_ts>2019-09-06 03:14:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190905155556.patch</filename>
            <type>text/plain</type>
            <size>85252</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxMzQ3MGVlYjk3Yzg3
YzkyOTAxNWZhNDNjYjcyMTBjYjExNmU5Zi4uYTEwMGNjMTMyMTI4NWQ0NWNlN2I4NmYzZjhhNjYz
Mzc2MzM3YzZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA5LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gb2JzZXJ2
YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lvbklEIHRvIGVhc2UgTmV0d29y
a1Byb2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2VzcyBjb25uZWN0aW9uLgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIExldCBjb25uZWN0aW9uIGlkZW50
aWZpZXIgYmUgc2V0IGluIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgZ2VuZXJhdGVkLgorCiAyMDE5
LTA5LTA0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAg
ICAgIFtXaW5dW0NsYW5nXSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwKDExMjIsMjApOiBlcnJv
cjogY2Fubm90IGRlY29tcG9zZSB0aGlzIHR5cGU7ICdzdGQ6OnR1cGxlX3NpemU8Y29uc3QgV1RG
OjpLZXlWYWx1ZVBhaXI8V1RGOjpTdHJpbmcsIFdURjo6UmVmUHRyPFdURjo6SlNPTkltcGw6OlZh
bHVlLCBXVEY6OkR1bWJQdHJUcmFpdHM8V1RGOjpKU09OSW1wbDo6VmFsdWU+ID4gPj46OnZhbHVl
JyBpcyBub3QgYSB2YWxpZCBpbnRlZ3JhbCBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZTY4MzIyMTYwMTcx
YmY4NzVkYjY2MWU0M2RkNjc0YjhkZmU2YzZiLi40YWY5ODgzYWQ3NzFmNzMxMmRkNjQwYjRkOTlh
ZGE0NzNmMDlkMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxOS0wOS0wNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdlYlByb2Nlc3Mg
cHJvY2Vzc0lkZW50aWZpZXIgdG8gaWRlbnRpZnkgU2VydmljZSBXb3JrZXIgY29ubmVjdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTQ1OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uIGJlIHN0b3JlZCBpbiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy4KKyAgICAgICAgVGhleSBhcmUgbm93IGtleWVkIGJ5IHNlc3Npb24gSURzIGhlbmNlIHdo
eSBXZWJTV0NsaWVudENvbm5lY3Rpb24gaXMgdXNpbmcgdGhlIHNlc3Npb24gSUQgYXMgbWVzc2Fn
ZSBjb25uZWN0aW9uIElELgorICAgICAgICBDcmVhdGlvbiBubyBsb25nZXIgcmVxdWlyZXMgYSBz
eW5jIElQQyBzaW5jZSB0aGUgY29ubmVjdGlvbiBpcyB1bmlxdWVseSBpZGVudGlmaWVkIGJ5IGl0
cyBzZXNzaW9uIElEIGFuZCBpdHMgcHJvY2VzcyBJRC4KKyAgICAgICAgVGhlc2UgSURzIGFyZSBz
dGFibGUgb3ZlciBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdpdGhpbiBOZXR3b3Jr
UHJvY2VzcywgYSBzZXJ2ZXIgY29ubmVjdGlvbiBpcyBtYW5hZ2VkIGJ5IGEgU1dTZXJ2ZXIgd2hp
Y2ggaXMgc2Vzc2lvbiBJRCBzcGVjaWZpYy4KKyAgICAgICAgSW4gdGhhdCBjYXNlLCB0aGUgcHJv
Y2VzcyBpZGVudGlmaWVyIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGNvbm5lY3Rpb24uCisKKyAg
ICAgICAgTW92ZSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gYmUgb3duZWQgYnkgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuCisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcg
aXQgd2hlbiB3ZWJwcm9jZXNzIGlzIGNvbm5lY3RpbmcgdG8gbmV0d29yayBwcm9jZXNzLCB1c2Ug
YSBkZWRpY2F0ZWQgSVBDIG1lc3NhZ2UuCisgICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gb25jZSBXZWJQcm9jZXNzIGFza3MgdG8gY3JlYXRlIGl0LgorICAg
ICAgICBUaGlzIHdpbGwgYWxsb3cgZXhpc3RpbmcgV2ViUHJvY2VzcywgaW4gY2FjaGUgb3IgcnVu
bmluZyBwYWdlcywgdG8gcnVuIHNlcnZpY2Ugd29ya2VycyBhcyB3ZWxsLgorICAgICAgICBBIGNv
bnRleHQgY29ubmVjdGlvbiBtYXAgaXMga2VwdCBpbiBOZXR3b3JrIFByb2Nlc3MgdG8gcmV1c2Ug
Y29udGV4dCBjb25uZWN0aW9ucyBzaW5jZSB0aGVzZSBjb25uZWN0aW9ucyBhcmUgbm90IHNlc3Np
b25JRCBzcGVjaWZpYy4KKworICAgICAgICBNaWdyYXRlIGZyb20gYSBzaW5nbGUgYm9vbGVhbiB0
byBhIEhhc2hTZXQgdG8gdHJhY2sgd2hldGhlciBzb21lIGNvbm5lY3Rpb25zIGFyZSBpbiB0aGUg
cHJvY2VzcyBvZiBiZWluZyBjcmVhdGVkLgorICAgICAgICBQcmV2aW91c2x5IGlmIHR3byByZXF1
ZXN0cyB0byBjcmVhdGUgY29ubmVjdGlvbnMgd2VyZSBkb25lIHNob3J0bHkgb25lIGFmdGVyIHRo
ZSBvdGhlciBvbiBkaWZmZXJlbnQgcmVnaXN0cmFibGUKKyAgICAgICAgZG9tYWlucywgdGhlIHNl
Y29uZCByZXF1ZXN0IHdvdWxkIG5vdCBiZSBwcm9jZXNzZWQuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZl
U3luY01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rp
b24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Zm9y
RWFjaFNXU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5lZWRzU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0
ZXJTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNv
bm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVu
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25G
b3JTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6fldlYlNXQ2xpZW50Q29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENv
bm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVtb3ZlU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
bGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NsaWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZl
RmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
Y29ubmVjdGlvblRvU2VydmVyTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnN5bmNUZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5l
Y3Rpb246OnVwZGF0ZVRocm90dGxlU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJBZ2VudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW46CisKIDIwMTktMDktMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgTW9iaWxlU2FmYXJpIG1heSBjcmFzaCB3aGVuIGludm9raW5nIHRoZSBDKysg
bGFtYmRhIGluIC1bV0tDb250ZW50VmlldyBfc2hhcmVGb3JXZWJWaWV3Ol0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcApp
bmRleCA3MzkxYzRjMjFhMzZkNTBkNzdmMjA2ZDdiM2VlYmQwNWIwNjQwNGUwLi43NjBjNGNkMGEz
YzZlZWQ3NWU4YTg2ODY2MmU5NWM0OTA1OTAxNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC05OSw5ICs5
OSw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyBtZXNzYWdlID0geyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcG9ydHNP
ckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgIGF1dG8gc291cmNlSWRlbnRp
ZmllciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFk
KCkuaWRlbnRpZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW21lc3NhZ2UgPSBXVEZNb3Zl
KG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlk
ZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRleHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCld
ICgpIG11dGFibGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IGNvbnRleHQu
c2Vzc2lvbklEKCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50
aWZpZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNv
bnRleHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBpZiAo
YXV0byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rp
b24oKSkKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRl
bnRpZmllciwgc291cmNlT3JpZ2luKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVy
LCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogICAgIH0pOwogCiAg
ICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmZTBjMDg0OTJjMzUyMTdhMjM2
ZTIzMmMwNmJjNWFiNjM2Nzg4NmExLi5mZmZiNzExZGUwYjJmZGZiN2RhYTkxZDk2MGU0NGEzYTlm
OTEwM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdv
cmtlclN0YXJ0ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChPcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0
YWxsKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggOTMyNmEzYmFj
NjU5YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMC4uOWNkOGRlMGQwNzM1NzNkNWU4NTNjMzc5
OTRiYWM1MzU1ZTk5MjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgU2Vjb25kcyB0ZXJtaW5hdGlvbkRlbGF5IHsgMTBfcyB9OwogCi1TV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyKQorU1dTZXJ2ZXI6
OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZlciwgSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIDogbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9pZGVudGlmaWVyKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDBjNTdhMzU3ZWZlM2VjYjRmNDE5N2NjOTFmMDg3MDIy
MGI2NjcwMGQuLmIzOTRlYmYzYTY1YWIxMDkwYmZhZDgyZTFlZDQ4ZDYwZTRiOTJmMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTU2LDYgKzU2LDcgQEAgY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBj
bGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFz
cyBTZXJ2aWNlV29ya2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7Citz
dHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVu
dFF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3Qg
U2VydmljZVdvcmtlckZldGNoUmVzdWx0OwpAQCAtODYsNiArODcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdl
KGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBj
b25zdCBTZXJ2aWNlV29ya2VyRGF0YSYgbmV3Q29udHJvbGxlcikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9uUmVhZHlSZXF1
ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1l
bnRJZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOwogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mKSA9IDA7CiAKQEAgLTkzLDcgKzk1LDcgQEAgcHVibGljOgogICAg
ICAgICBjb25zdCBTV1NlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0K
IAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29ubmVj
dGlvbihTV1NlcnZlciYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2Vy
dmVyJiwgSWRlbnRpZmllcik7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hG
ZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
blNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IGFjM2EyMWExZDQ3OGU2NWIyNDFmNjUzODMzYjU5YjlmZjQ1
M2Q0MTEuLmIxY2QyY2Y5NzNjMTVjNjJkZWUzZGFjMjIxYTlmMjU2MjU4ODk5MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yMTQsMjEgKzIxNCwyMiBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3RpbwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVj
dGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAg
ICAgIGlmIChhdXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQoZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpKQogICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlv
blRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewotICAgICAg
ICAgICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOworICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAg
aWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICAgICAgbV9zd0NvbnRleHRDb25u
ZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9
IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5l
Y3Rpb24oY29ubmVjdGlvbikpIHsKLSAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5kaWRS
ZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgQVNT
RVJUKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIGlmIChtX3N3Q29udGV4dENvbm5l
Y3Rpb24pIHsKKyAgICAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZUZl
dGNoVGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjksNyArMjcwLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmUKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlvbiA9IG1f
c3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIGlmIChh
dXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQoZGVjb2Rlci5kZXN0aW5hdGlv
bklEKCkpKQogICAgICAgICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
Mjg2LDEwICsyODcsMTkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFJlZlB0cjxXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24+IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBtX25l
dHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9u
KGNvbm5lY3Rpb24pKSB7Ci0gICAgICAgIC8vIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgZXhpdGVk
LgotICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dh
c0Nsb3NlZChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnJlbGVhc2VOb25OdWxsKCkpOwotICAg
ICAgICByZXR1cm47CisgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBh
dXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+cmVnaXN0cmFi
bGVEb21haW4oKTsKKworICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25D
bG9zZWQoKTsKKworICAgICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEOwor
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZl
cikgeworICAgICAgICAgICAgc2VydmVyLm1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFibGVEb21h
aW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICAgICAgaWYgKHNlcnZl
ci5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdp
c3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICAgICAgc2Vzc2lvbklEID0gc2VydmVyLnNlc3Np
b25JRCgpOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHNlc3Npb25JRCkKKyAgICAgICAgICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0
cmFibGVEb21haW4sICpzZXNzaW9uSUQpOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGNvbm5lY3Rpb24pOwpAQCAtODc4LDE4ICs4ODgsMjMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQogICAgIH0KIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBhdXRvJiBzZXJ2ZXIg
PSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBh
dXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3
b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7Ci0gICAg
Ci0gICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciA9IGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKTsKLSAgICBMT0coU2VydmljZVdvcmtlciwg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rp
b24gLSAlcyIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVy
Q29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCks
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCk7CiAKLSAgICBBU1NFUlQoIW1fc3dD
b25uZWN0aW9ucy5jb250YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOwotICAgIG1f
c3dDb25uZWN0aW9ucy5hZGQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1ha2VXZWFrUHRy
KCpjb25uZWN0aW9uKSk7CisgICAgQVNTRVJUKCFtX3N3Q29ubmVjdGlvbnMuY29udGFpbnMoc2Vz
c2lvbklELnRvVUludDY0KCkpKTsKKyAgICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNlc3Npb25JRC50
b1VJbnQ2NCgpLCBtYWtlV2Vha1B0cigqY29ubmVjdGlvbikpOwogICAgIHNlcnZlci5hZGRDb25u
ZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIG1fc3dDb250ZXh0Q29ubmVjdGlv
biA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nl
c3MsIHJlZ2lzdHJhYmxlRG9tYWluLCBtX2Nvbm5lY3Rpb24uZ2V0KCkpOworCisgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+Zm9yRWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2ZXIpIHsKKyAgICAgICAg
c2VydmVyLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCptX3N3Q29udGV4dENvbm5l
Y3Rpb24pOworICAgIH0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCA0MmMxN2UxYjA1YjQwNmIzOTRjOTU0YWI3OWMyYTM4NjQ5OTI0MTM0Li5lOGE1NmZkN2UyZDFk
NTFlODM5MDI3NTc5MjZjN2Y5YTU0OTBmZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC02OCw2ICs2OCw3IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogY2xhc3MgTmV0d29y
a1NvY2tldFN0cmVhbTsKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDsKIGNsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjsKIHR5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIAogbmFtZXNwYWNl
IE5ldHdvcmtDYWNoZSB7CkBAIC0yMDgsNyArMjA5LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25u
ZWN0aW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoU1dT
ZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFNXQ29u
dGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyU1dDb25uZWN0aW9ucygpOwogI2VuZGlmCiAKQEAgLTMxOSw3ICszMjEsOCBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1h
cDxXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWFrUHRyPFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBX
ZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAgICBSZWZQ
dHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBtX3N3Q29udGV4dENvbm5lY3Rpb247
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZmQwOTJmMzE0NzkzMjU0YzRmYjU0
Nzk4ZmI3ZTcwNjA3ZTM2YjY3MS4uNzc3YWRmYjdjYjQ5ZDdlNmFjYjEyNjc1ZjRjMWFjZjI5NWM5
ZjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04
MSw3ICs4MSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlv
bihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAjZW5kaWYKIAogICAgIENyZWF0
ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyIHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCAxNDM3ZDFhZTFjZDNlZmUwOTFiZDRkNTA4MzRlMjQwMjMyYjUxMjkxLi4xODcyNmY2ZTNkYmNi
ZjA0ZWQzODIyZDBiOGYzN2JjOGU0YzE0MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjE1LDE3ICsyMTUsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlcgogICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
LSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQo
KSk7Ci0gICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoYXV0byogd2ViU1dDb25uZWN0
aW9uID0gY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0
aW9uKSkgewotICAgICAgICAgICAgd2ViU1dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KLSNlbmRpZgogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiB9CiAKQEAgLTQxNCw3ICs0MDMsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlv
bmFsPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIElQQzo6QXR0YWNobWVu
dD4+CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc1Nl
cnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVu
dD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpcGNDb25uZWN0aW9uID0gY3JlYXRlSVBD
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwogICAgIGlmICghaXBjQ29ubmVjdGlvbikgewpAQCAt
NDMxLDI0ICs0MjAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudAogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoaXBjQ29ubmVjdGlvbi0+c2Vjb25kKSk7CiAKICAgICBjb25uZWN0aW9u
LnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5vbkxpbmUo
KSk7Ci0gICAgCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzKSB7Ci0gICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdv
cmtlckVudGl0bGVtZW50KCkpOwotICAgICAgICBBU1NFUlQobV93YWl0aW5nRm9yU2VydmVyVG9D
b250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICBhdXRvIGNvbnRleHRDb25uZWN0aW9u
ID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUoKnRoaXMsIHJlZ2lzdHJh
YmxlRG9tYWluLCBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7Ci0gICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShyZWdpc3RyYWJs
ZURvbWFpbiksIGNvbnRleHRDb25uZWN0aW9uLmNvcHlSZWYoKSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0KLSAgICAgICAgbV93YWl0
aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsKLQotICAgICAg
ICBmb3IgKGF1dG8qIHNlcnZlciA6IFNXU2VydmVyOjphbGxTZXJ2ZXJzKCkpCi0gICAgICAgICAg
ICBzZXJ2ZXItPnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKGNvbnRleHRDb25uZWN0
aW9uKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpc1NlcnZpY2VXb3JrZXJQcm9j
ZXNzKTsKLSAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVEb21haW4pOwotI2VuZGlmCiAKICAg
ICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGRDb25uZWN0aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlv
bigpKTsKIH0KQEAgLTIzOTAsMzYgKzIzNjEsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0
U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGUK
ICNlbmRpZiAvLyBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vz
czo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgZm9yIChhdXRvJiBzZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uIDogbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy52YWx1ZXMoKSkgewotICAgICAg
ICBpZiAoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpID09ICZjb25u
ZWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uZ2V0
KCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNz
Ojpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChSZWY8V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCi17Ci0gICAgYXV0
byYgcmVnaXN0cmFibGVEb21haW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3Ry
YWJsZURvbWFpbigpOwotICAgIAotICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmNvbm5l
Y3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShy
ZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dT
ZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JSZWdp
c3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAg
aWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJl
Z2lzdHJhYmxlRG9tYWluKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
Q29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0
aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKLSAgICAgICAgY3JlYXRlU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgV1RGOjpudWxsb3B0KTsKLSAgICB9Ci19
Ci0KLWJvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbikgY29uc3QKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmZvckVhY2hTV1NlcnZlcihjb25zdCBG
dW5jdGlvbjx2b2lkKFNXU2VydmVyJik+JiBjYWxsYmFjaykKIHsKLSAgICByZXR1cm4gV1RGOjph
bnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7Ci0gICAgICAg
IHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwotICAgIH0pOworICAgIGZvciAoYXV0byYg
c2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKCpzZXJ2ZXIp
OwogfQogCiBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0yNDQ3LDQwICsyMzkyLDM2IEBAIFdlYlNXT3JpZ2lu
U3RvcmUqIE5ldHdvcmtQcm9jZXNzOjpleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBB
TDo6U2Vzc2lvbklECiAgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxXZWJTV09yaWdpblN0b3JlJj4o
c3dTZXJ2ZXItPm9yaWdpblN0b3JlKCkpOwogfQogCitib29sIE5ldHdvcmtQcm9jZXNzOjpuZWVk
c1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIFdU
Rjo6YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsmXShhdXRvJiBzd1NlcnZlcikgeworICAg
ICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICB9KTsKK30KKwogV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbikKIHsKICAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgaWYgKG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25u
ZWN0aW9uKQorICAgIGlmIChtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdp
c3RyYWJsZURvbWFpbikpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX3dhaXRpbmdGb3JT
ZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7Ci0gICAgaWYgKHNlc3Npb25J
RCkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKHJlZ2lzdHJhYmxlRG9tYWluLCAqc2Vzc2lvbklE
KSwgMCk7Ci0gICAgZWxzZQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MocmVnaXN0cmFibGVEb21haW4pLCAwKTsKLX0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKLXsKLSAgICBpZiAo
YXV0byBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChkZXN0aW5hdGlvbklk
ZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9u
LT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIu
Y29udGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNv
dXJjZU9yaWdpbik7CisgICAgbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwgc2Vzc2lvbklEIH0sIDApOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JD
bGllbnRJZGVudGlmaWVyJiBzb3VyY2UsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgaWYgKGF1dG8gY29u
bmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoY29ubmVjdGlvbklkZW50aWZpZXIp
KQotICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihkZXN0aW5h
dGlvbiwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvbm5lY3Rpb24oZGVzdGluYXRpb25J
ZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlv
bi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVy
LmNvbnRleHRJZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBz
b3VyY2VPcmlnaW4pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVy
Q29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNT
RVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgQVNT
RVJUKCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVy
KCkpKTsKLSAgICBtX3N3U2VydmVyQ29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24uaWRlbnRpZmll
cigpLCBtYWtlV2Vha1B0cihjb25uZWN0aW9uKSk7CiAgICAgYXV0byogc3RvcmUgPSBleGlzdGlu
Z1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpOwogICAgIEFT
U0VSVChzdG9yZSk7CiAgICAgaWYgKHN0b3JlKQpAQCAtMjQ4OSwyNiArMjQzMCwyMSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNv
bm5lY3Rpb24mIGNvbm5lY3RpbwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dT
ZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKLSAg
ICBBU1NFUlQobV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uLmlkZW50aWZpZXIo
KSkuZ2V0KCkgPT0gJmNvbm5lY3Rpb24pOwotICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5yZW1v
dmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwogICAgIGlmIChhdXRvKiBzdG9yZSA9IGV4aXN0
aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSkpCiAgICAg
ICAgIHN0b3JlLT51bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpzd0NvbnRleHRDb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5l
ZWRlZChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24pCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24o
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8m
IHJlZ2lzdHJhYmxlRG9tYWluID0gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJs
ZURvbWFpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBp
cyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwotICAgIHNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24udGVybWluYXRlKCk7Ci0gICAgCi0gICAgZm9yIChhdXRvJiBzd1NlcnZlciA6
IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNG
b3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAg
Ci0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAg
bV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwor
ICAgIEFTU0VSVCghbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0
aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlu
cy5yZW1vdmUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBtX3NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCksICZj
b25uZWN0aW9uKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29udGV4
dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQor
eworICAgIEFTU0VSVChtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmdldChjb25uZWN0aW9u
LnJlZ2lzdHJhYmxlRG9tYWluKCkpID09ICZjb25uZWN0aW9uKTsKKyAgICBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCAwOTBkNDdmMDFhZDJkY2VkNDk5YWJlODk3ZjcwYjlhNGNlOTA3YzNhLi45
ZDg4NmZkODQyYmFlMGZhYTliZDg4ZjM1NTI3MDZlZmQ4ZmY2ZTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMDAsMTYgKzMwMCwxNyBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKLSAgICB2b2lkIGNy
ZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOworICAgIHZvaWQgY3JlYXRlU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFBB
TDo6U2Vzc2lvbklEKTsKICAgICAKICAgICBXZWJDb3JlOjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0
aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXU2VydmVy
Q29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKICAgICAKLSAgICB2b2lkIHN3Q29u
dGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYpOwotICAgIAotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29u
bmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24m
KTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJTV0NvbnRl
eHRDb25uZWN0aW9uKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQg
dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJik7CisKKyAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7Cisg
ICAgdm9pZCBmb3JFYWNoU1dTZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpTV1Nl
cnZlciYpPiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzk1LDcg
KzM5Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lkIGluaXRp
YWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsK
LSAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpB
dHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlv
blNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpA
QCAtNDY0LDEzICs0NjUsMTIgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
SVBDOjpBdHRhY2htZW50Jik7CiAgICAgCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSwgV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgCiAgICAgdm9pZCBkaXNhYmxlU2Vy
dmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgCiAgICAgV2ViU1dPcmln
aW5TdG9yZSogZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCkg
Y29uc3Q7Ci0gICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogCiAg
ICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgU3RyaW5nJiBz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmKTsKICNlbmRpZgpAQCAtNTQwLDEyICs1NDAsMTEgQEAgcHJpdmF0ZToKICAgICBM
b2NrIG1fc3RvcmFnZVRhc2tNdXRleDsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUmVmUHRyPFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnM7Ci0g
ICAgYm9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZh
bHNlIH07CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKICAg
ICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxh
eSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0
YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Pj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJmMjFhMmRjN2JhZGFmNjIwMzk1Y2QwNWM2
MWVkMjQxMjI5MzJmOWQuLmFiM2JhYmI0ODRlODdmYjMzMzczZDlhODk2YzI1MTJkMTk2NTFkMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKHN0cnVj
dCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9uIGZvciBjb21tdW5pY2F0
aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wg
aXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0
cmFibGVEb21haW4pIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVu
dGlmaWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8
SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmllcikgQXN5bmMKIAogI2lmIFVTRShT
T1VQKQogICAgIFNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKQEAgLTE1
MywxMCArMTUzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFNldENhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBoYW5kbGUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQotCi0gICAgUG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNz
YWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZSwgV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikK
LQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50
aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzVGVybWluYXRpb25EZWxheSgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCA2YmNiOTlhMTAwZjg2YjY5OWM3NzE1ZDViNWY0NGY4ZWFmNjg1
ZmJhLi45M2JmNTE5ODc2NzYxZjA3MzAxZjRiMGJmMjI0ZTc2N2FlNGE4ZDY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNjEsOCArNjEsOCBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fc2Vzc2lvbklELmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBTV1NFUlZFUkNPTk5F
Q1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VX
b3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCiAKLVdlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgU1dTZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogU1dTZXJ2ZXI6
OkNvbm5lY3Rpb24oc2VydmVyKQorV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBTV1NlcnZlciYgc2VydmVy
LCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJ
ZGVudGlmaWVyLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIDogU1dTZXJ2ZXI6OkNvbm5lY3Rp
b24oc2VydmVyLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyVHlwZT4ocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSkpCiAgICAgLCBtX3Nlc3Npb25J
RChzZXNzaW9uSUQpCiAgICAgLCBtX2NvbnRlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAg
LCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpAQCAtMjUzLDEzICsyNTMsMTMgQEAg
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoU2VydmljZVdv
cmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIHNlcnZlcigpLnNjaGVkdWxlSm9iKFdURk1vdmUo
am9iRGF0YSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4
dElkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4pCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIs
IGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsK
ICAgICBhdXRvKiBzb3VyY2VTZXJ2aWNlV29ya2VyID0gc2VydmVyKCkud29ya2VyQnlJRChzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICBpZiAoIXNvdXJjZVNlcnZpY2VXb3JrZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVy
LCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VTZXJ2aWNlV29ya2VyLT5kYXRhKCksIHNvdXJjZU9y
aWdpbiB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50IHsgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmll
ciwgbWVzc2FnZSwgc291cmNlU2VydmljZVdvcmtlci0+ZGF0YSgpLCBzb3VyY2VPcmlnaW4gfSk7
CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbih1aW50
NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggOTAwMjNkNjYxODRmZDJkMTg3MWQ0NDg5NjE3YTBm
OWY2NzJhMDI4Yi4uYWRlOGU3ZTNhNjMwYzYxNTBiOTFhYTlhYjIwMzA2NjU1NjljNzc1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgog
I2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NTMsNyArNTQsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uLCBwdWJsaWMg
SVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGlj
OgotICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlNX
U2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlNXU2VydmVyJiwgSVBDOjpD
b25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsK
ICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24oY29uc3QgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJikg
PSBkZWxldGU7CiAgICAgfldlYlNXU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsOwogCkBAIC02NCw5
ICs2NSw2IEBAIHB1YmxpYzoKIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRl
eHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7Ci0KIHByaXZhdGU6CiAgICAgLy8gSW1w
bGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlBy
b2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpIGZpbmFsOwpAQCAt
OTQsNiArOTIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKICAg
ICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRp
ZmllciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJj
ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmlu
YWw7CisKICAgICB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6
OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpIGZpbmFsOwogCiAgICAgYm9vbCBpc1Rocm90
dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRsZWFibGU7IH0KQEAgLTEwMiw4ICsx
MDIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90
dGxlYWJsZSk7CiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UpOworCiAgICAg
SVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7IH0KLSAgICB1aW50NjRfdCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpOyB9CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRC50b1VJbnQ2NCgpOyB9CiAgICAgCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoV2Vi
Q29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgVSYmIG1lc3NhZ2UpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4
IGJmZTQwM2RmNWViYTI4OTQ2OTc1N2MzMDQ4MTgxNGRlNmI1YTczMzAuLjdiMWU5MjA3MTA5Y2Qx
NDUwNzZiOWFhNzIwMDk5NTExOWYzOGJlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsOSArNDYsMTMgQEAgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oTmV0d29ya1Byb2Nlc3MmIG4KICAgICAsIG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5l
Y3Rpb24pKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKIHsKKyAgICBt
X25ldHdvcmtQcm9jZXNzLT5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOwogfQog
Ci1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oKSA9IGRlZmF1bHQ7CitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnVucmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKK30KIAogSVBDOjpDb25uZWN0
aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QKIHsKQEAgLTY1LDYgKzcxLDEyIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkKCkKICAgICAgICAgZmV0Y2gtPmZhaWwoUmVz
b3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2Ug
V29ya2VyIGNvbnRleHQgY2xvc2VkIl9zIH0pOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2Fn
ZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX25ldHdvcmtQ
cm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jb25uZWN0aW9uKGRlc3RpbmF0
aW9uSWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5l
Y3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRp
Zmllci5jb250ZXh0SWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNl
T3JpZ2luKTsKK30KKwogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRh
dGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Okluc3Rh
bGxTZXJ2aWNlV29ya2VyIHsgZGF0YSwgc2Vzc2lvbklELCB1c2VyQWdlbnQgfSk7CkBAIC0xMTcs
NyArMTI5LDE3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5p
c2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogCiB2b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKQogewotICAg
IG1fbmV0d29ya1Byb2Nlc3MtPnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVk
KCp0aGlzKTsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2Vzcy0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIGlzIG5vIGxvbmdlciBuZWVkZWQsIHRlcm1pbmF0aW5nIGl0Iik7CisgICAg
dGVybWluYXRlKCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZd
KGF1dG8mIHNlcnZlcikgeworICAgICAgICBzZXJ2ZXIubWFya0FsbFdvcmtlcnNGb3JSZWdpc3Ry
YWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICB9KTsKKwor
ICAgIGNvbm5lY3Rpb25DbG9zZWQoKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA5MGEwN2Vh
MjRiYmFkMzM3NTY3YTRiZWEzNzIyNWYzODIyMTFhYTViLi4yMGVjMTVlNmJmOTlmOGVkNjkyZDBi
YzJiOWQyZGE1ZDBlN2Y4YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHN0cnVjdCBGZXRjaE9wdGlvbnM7CitzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CiAKQEAgLTgyLDYgKzgzLDggQEAgcHJpdmF0ZToK
ICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmlu
YWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5h
bDsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0
aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhv
c3QgV2ViUHJvY2VzcwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IDk5NDllM2Q0MzVmMjQ3YjUwYmZkNDQ0ZDUwNmRlMmE5NTI3ZGM1MmQuLmUzMTU4ZmM5MGIz
NTc0ZTRiODYwYmQyNDFjMjdhMWIwNDI2ZWI4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYs
NiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gewog
ICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBD
bGFpbSh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgU2V0U2NyaXB0UmVz
b3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNj
cmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNlVVJMLCBTdHJpbmcgbWltZVR5cGUp
OworICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRl
c3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2Fn
ZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNl
T3JpZ2luKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggNDQ5MDFhOGMzODdiNzgwMDUwOTg3ZjlkYjE2NWY2NDQwZjJiMTQwYi4uNTFiM2U5
MDgwNjZlNWY4YzQxZWQ4MDFmNjFhZTliMTAxN2RmNDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
NDIsMTYgKzE0Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2VzCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6b3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBjb25uZWN0
aW9uUmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KQog
ewotICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwotICAgIFJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KSkg
ewotICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKLSAgICAgICAgcmVnaXN0
cmFibGVEb21haW4gPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9j
ZXNzUHJveHkpLnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBjb25u
ZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNy
ZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpLCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCByZWdpc3RyYWJsZURv
bWFpbiB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2ViUHJvY2Vzc1By
b3h5ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlvblJlcXVlc3RJZGVu
dGlmaWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgeworICAgIGNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVBy
b2Nlc3NJZGVudGlmaWVyKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rp
b25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTIw
OSwxMiArMTIwMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0U2FuZGJveEV4dGVu
c2lvbnNGb3JCbG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4pCi17Ci0gICAgbV9wcm9jZXNzUG9vbC5lc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0
cmFibGVEb21haW4pLCBXVEY6Om51bGxvcHQpOwotfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4
cGxpY2l0U2Vzc2lvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAg
bV9wcm9jZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXNzaW9uSUQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAppbmRleCA4MGRmZTYwYTI0ODQ0M2RkOTVkMWJlOTBhOWYxNDFiYzFiYmMxYmM5Li44
OGRhN2MwNGY2NjJjODdhYjgzMzQ5MmRiODg5MDk2NzdjNDYzOGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAt
MjM4LDggKzIzOCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKLSAgICB2b2lkIGVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lv
bihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9p
ZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwogI2VuZGlmCiAKICAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0
X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRf
dD4gcXVvdGEpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlNGFmZTRi
NWI3MWFmNmI3ZDM0NWY1NmIwY2YxYzEzYWRkZjYzZTVhLi5hNmRiYjdjNWM5MzYzM2MyMTQ0ZmVk
OWRmOTY2OWYzYmY1M2FmNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02
MSw4ICs2MSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgZXhwbGljaXRT
ZXNzaW9uKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmln
aW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VS
ZXF1aXJlZCkgLT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAK
aW5kZXggOGIzYTQyY2QwNzFmNTQxZjMwNGUyNWE0YTNiMGNiZDUwNDUwNWU5MS4uYTRiYTkyYTkw
OGY2ZGI0MGRlN2U5OWNkMzkxZjVhYzY2ZGQxZmVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTc2LDkgKzc2
LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFBy
b2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYKICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5p
dGlhbGl6YXRpb25EYXRhLmFkZCgicmVnaXN0cmFibGUtZG9tYWluIl9zLCByZWdpc3RyYWJsZURv
bWFpbigpLnN0cmluZygpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojpz
dGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgT3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpCit2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6
OnN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZh
dWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQs
IG1fc2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIGluaXRpYWxTZXNzaW9uSUQudmFsdWVPcihQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB9LCAwKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgp
LCBtX3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9y
ZSwgcmVnaXN0cmFibGVEb21haW4oKSwgc2Vzc2lvbklEIH0sIDApOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk6OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuaAppbmRleCBkODBjMWE1YjJiMDE2NjgwODliMzYxNDJlZjkxZTNkZDMyZmI0YWIxLi5l
NjU2NzU1MTk1M2UwMzY2ZTg0YzM4Y2E1NmY0ODY0NTE4MzlhNGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRTZXJ2aWNl
V29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwogCi0gICAgdm9p
ZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9u
SUQ+IGluaXRpYWxTZXNzaW9uSUQpOworICAgIHZvaWQgc3RhcnQoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKaW5kZXggZTMyZWI0Mzc2MzU0MGI5NmEwMTE4MzMzODQxMjFlZjAwOTNhNWI2Yi4uODE5Njcy
Y2ZhOTE1ZjI5YjE5ODMyNDVlYzkyNjRjYjM5MzNhMDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdl
YlByb2Nlc3NQcm94CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCit2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHByb3h5LCAmcHJveHkgPT0gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSk7CiAKQEAgLTcx
MCw5ICs3MTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogCiAgICAgbV9tYXlIYXZlUmVn
aXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmNsZWFyKCk7CiAKLSAgICBXZWJzaXRlRGF0YVN0b3JlKiB3
ZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cjsKLSAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICB3
ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdOb25EZWZhdWx0RGF0
YVN0b3JlRm9yU2Vzc2lvbklEKCpzZXNzaW9uSUQpOworICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ05vbkRlZmF1bHREYXRh
U3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIAogICAgIGlmICghd2Vic2l0ZURhdGFTdG9y
ZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGY5NDM2N2ZiYTljMWY2NmY0YjNjOTQwZGUxNjc0
YjhkZGE2YTU3YTQuLjBhNmQ4Y2VhZDUxNWEyNjFiZGNhN2NjMTQ1ZWM1ZGFiZDFiYzVkMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzgxLDcgKzM4MSw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIpIGNvbnN0OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lk
IGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFM
OjpTZXNzaW9uSUQ+KTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdv
cmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0K
ICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29s
IGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFs
bG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2Vy
KCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3Jr
ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGJmYzVmZDYyMDFlY2ZhOWEzMzc3
NTBlZGVjMjEyZTI1M2IzMmEzYzUuLjYyMzI0MzBjNTkwMjc3MjkxODFhZDMyZjhlZWRmZWI0MTE0
MDBjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NsaWVu
dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBhdXRvIHNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmdldChtYWtl
T2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCkpKTsKKyAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyQ29ubmVjdGlv
biA9IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
OwogICAgICAgICBpZiAoc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCiAgICAgICAgICAgICBzZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwMiw4ICsyMDIsOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGF1dG8gY29ubmVjdGlvbnMgPSBzdGQ6OmV4Y2hh
bmdlKG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllciwgeyB9KTsKLSAgICBmb3IgKGF1dG8mIGNv
bm5lY3Rpb24gOiBjb25uZWN0aW9ucy52YWx1ZXMoKSkKKyAgICBhdXRvIHN3Q29ubmVjdGlvbnMg
PSBzdGQ6OmV4Y2hhbmdlKG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbiwgeyB9KTsKKyAgICBmb3Ig
KGF1dG8mIGNvbm5lY3Rpb24gOiBzd0Nvbm5lY3Rpb25zLnZhbHVlcygpKQogICAgICAgICBjb25u
ZWN0aW9uLT5jb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCk7CiAjZW5kaWYKIH0KQEAgLTI2NywyOSAr
MjY3LDEwIEBAIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzCiBXZWJTV0NsaWVudENvbm5lY3Rpb24m
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlz
VmFsaWQoKSk7Ci0gICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZW5zdXJlKHNl
c3Npb25JRCwgW3Nlc3Npb25JRF0geworICAgIHJldHVybiAqbV9zd0Nvbm5lY3Rpb25zQnlTZXNz
aW9uLmVuc3VyZShzZXNzaW9uSUQudG9VSW50NjQoKSwgW3Nlc3Npb25JRF0gewogICAgICAgICBy
ZXR1cm4gV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUoc2Vzc2lvbklEKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CiB9Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpyZW1v
dmVTV0NsaWVudENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQot
ewotICAgIEFTU0VSVChtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIuY29udGFpbnMoY29ubmVj
dGlvbi5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKSk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25z
QnlJZGVudGlmaWVyLnJlbW92ZShjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KCkpOwotfQotCi1TV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6aW5pdGlhbGl6ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkuaXNW
YWxpZCgpKTsKLSAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0g
ICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5l
Y3Rpb24uc2Vzc2lvbklEKCkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbjo6UmVwbHkoaWRlbnRpZmllciksIDApOwot
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgQVNTRVJUKCFtX3N3Q29u
bmVjdGlvbnNCeUlkZW50aWZpZXIuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fc3dDb25u
ZWN0aW9uc0J5SWRlbnRpZmllci5hZGQoaWRlbnRpZmllciwgJmNvbm5lY3Rpb24pOwotCi0gICAg
cmV0dXJuIGlkZW50aWZpZXI7Ci19CiAjZW5kaWYKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246Om1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXImIG1lc3NhZ2VQb3J0SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgK
aW5kZXggMDA3MWRiMWY3NmI2MGY2MTU1YWUwNGEzNmI2OGRiOTRiZjE2NzE2MS4uYzBhOGMzZjQ5
NWZlZmMzNTVmZTZlYjY3ODRmZDVhMDFiNWRhZDkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgK
QEAgLTc2LDExICs3Niw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiogZXhpc3RpbmdTZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBt
X3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZ2V0KHNlc3Npb25JRCk7IH0KKyAgICBXZWJTV0NsaWVu
dENvbm5lY3Rpb24qIGV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9u
LmdldChzZXNzaW9uSUQudG9VSW50NjQoKSk7IH0KICAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24m
IHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7Ci0KLSAg
ICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGluaXRpYWxpemVTV0NsaWVu
dENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVTV0Ns
aWVudENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0aW9uJik7CiAjZW5kaWYKIAogcHJpdmF0
ZToKQEAgLTExMyw4ICsxMTAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbjsKLSAgICBIYXNoTWFwPFdl
YkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bio+IG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViU1dDbGllbnRDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uOwog
I2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCA5NjVhZGFkNDNhNzUzNDA0MWQz
NDEyYjY3YzgwMWJjYjU4ZjNhZmNlLi5iYzBkNTU3NjY4NDkyYTM3MDAxNmMwYTcyZTgyMDRiNDVk
YjI5M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJTV09yaWdpblRhYmxl
LmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlckNsaWVudERhdGEuaD4KQEAgLTU1LDc3ICs1Nyw2MSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogV2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24oU2Vz
c2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1f
aWRlbnRpZmllcihtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyVHlwZT4oUHJvY2Vzczo6aWRlbnRpZmllcigpLnRvVUludDY0KCkpKQogICAgICwgbV9zd09y
aWdpblRhYmxlKG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJsZT4oKSkKIHsKICAgICBBU1NF
UlQobV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVl
ZGVkKCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbiB7IHNlc3Npb25JRCB9KTsKIH0KIAogV2ViU1dD
bGllbnRDb25uZWN0aW9uOjp+V2ViU1dDbGllbnRDb25uZWN0aW9uKCkKIHsKLSAgICBpZiAobV9j
b25uZWN0aW9uKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVTV0NsaWVudENvbm5lY3Rpb24oKnRoaXMpOworICAg
IGNsZWFyKCk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjppbml0aWFsaXplQ29u
bmVjdGlvbklmTmVlZGVkKCkKK0lQQzo6Q29ubmVjdGlvbiogV2ViU1dDbGllbnRDb25uZWN0aW9u
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fY29ubmVjdGlv
bikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCk7Ci0KLSAgICBtX2Nvbm5lY3Rpb24gPSAmbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKTsKLSAgICBtX2lkZW50aWZpZXIgPSBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaW5p
dGlhbGl6ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhpcyk7Ci0KLSAgICB1cGRhdGVUaHJvdHRsZVN0
YXRlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFU+Ci12b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6ZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoY29uc3QgVSYgbWVzc2FnZSkKLXsKLSAgICBp
bml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAg
ICAgICAgc2VuZChtZXNzYWdlKTsKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKIH0KIAogdm9p
ZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U2NoZWR1bGVKb2JJblNlcnZlcihqb2JE
YXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVs
ZUpvYkluU2VydmVyIHsgam9iRGF0YSB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0JiByZXN1bHQpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihyZXN1
bHQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkZpbmlzaEZl
dGNoaW5nU2NyaXB0SW5TZXJ2ZXIgeyByZXN1bHQgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBlbnN1cmVDb25u
ZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoaWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6QWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklu
U2VydmVyIHsgaWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25B
bmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5T
ZXJ2ZXIgeyBpZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0
IFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIpCiB7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlciB7IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdl
KSwgc291cmNlSWRlbnRpZmllciwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSB9LCAwKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VJZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4s
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiBkYXRhLCBjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRy
b2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdp
bi5kYXRhKCksIGRhdGEsIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIHVzZXJBZ2VudCB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdpbi5kYXRhKCksIGRh
dGEsIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHVzZXJB
Z2VudCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllcikKIHsK
LSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgY29udGV4dElkZW50aWZp
ZXIgfSB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlVucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIg
eyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllciB9IH0pOwog
fQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblBy
b21pc2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogewotICAgIGVu
c3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGtleSkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6RGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UgeyBrZXkg
fSk7CiB9CiAKIGJvb2wgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXlIYXZlU2VydmljZVdvcmtl
clJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pIGNv
bnN0CkBAIC0xNzYsMjUgKzE2MiwyNCBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0
Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjbwogICAgIHJ1
bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCB0b3BPcmlnaW4gPSBXVEZNb3ZlKHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsK
ICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRp
ZmllcjsKICAgICAgICAgbV9vbmdvaW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrcy5hZGQoY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2Vu
ZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpNYXRjaFJlZ2lzdHJhdGlvbihjYWxs
YmFja0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxiYWNrSUQsIHRvcE9y
aWdpbiwgY2xpZW50VVJMKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0
aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNr
KQordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KEZ1
bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIGlmIChtX3N3T3JpZ2luVGFibGUtPmlzSW1w
b3J0ZWQoKSkgewogICAgICAgICB0YXNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
bV90YXNrc1BlbmRpbmdPcmlnaW5JbXBvcnQuYXBwZW5kKFdURk1vdmUodGFzaykpOwotICAgIGlu
aXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3Jp
Z2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2Fs
bGJhY2tJZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3MuYWRk
KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5k
U2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVh
ZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLmRhdGEoKSwgY2xpZW50VVJMKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVhZHkoY2Fs
bGJhY2tJRCwgdG9wT3JpZ2luLmRhdGEoKSwgY2xpZW50VVJMKSk7CiB9CiAKIHZvaWQgV2ViU1dD
bGllbnRDb25uZWN0aW9uOjpyZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCBjYWxsYmFja0lELCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEp
CkBAIC0yMTYsMjkgKzIwMSwzMiBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVn
aXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbgogICAgIHJ1bk9y
RGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0
b3BPcmlnaW4gPSBXVEZNb3ZlKHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKICAg
ICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmll
cjsKICAgICAgICAgbV9vbmdvaW5nR2V0UmVnaXN0cmF0aW9uc1Rhc2tzLmFkZChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkdldFJlZ2lzdHJhdGlvbnMoY2FsbGJhY2tJ
RCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zIHsgY2FsbGJhY2tJRCwgdG9wT3JpZ2lu
LCBjbGllbnRVUkwgfSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9u
OjpzdGFydEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYg
b3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9u
QW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVxdWVz
dCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9
LCByZWZlcnJlciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OlN0YXJ0RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJ
ZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVx
dWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6Y2FuY2VsRmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6Q2FuY2VsRmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0pOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6Q2FuY2VsRmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShGZXRjaElkZW50aWZp
ZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKIHsKLSAgICBlbnN1cmVDb25uZWN0
aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvblRvU2VydmVyTG9zdCgpCiB7Ci0gICAgbV9jb25u
ZWN0aW9uID0gbnVsbHB0cjsKKyAgICBjbGVhcigpOworfQogCit2b2lkIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6Y2xlYXIoKQorewogICAgIGF1dG8gcmVnaXN0cmF0aW9uVGFza3MgPSBXVEZNb3Zl
KG1fb25nb2luZ01hdGNoUmVnaXN0cmF0aW9uVGFza3MpOwogICAgIGZvciAoYXV0byYgY2FsbGJh
Y2sgOiByZWdpc3RyYXRpb25UYXNrcy52YWx1ZXMoKSkKICAgICAgICAgY2FsbGJhY2soV1RGOjpu
dWxsb3B0KTsKQEAgLTI0NywzMSArMjM1LDI2IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogZ2V0
UmVnaXN0cmF0aW9uVGFza3MudmFsdWVzKCkpCiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CiAKKyAg
ICBhdXRvIHJlZ2lzdHJhdGlvblJlYWR5VGFza3MgPSBXVEZNb3ZlKG1fb25nb2luZ1JlZ2lzdHJh
dGlvblJlYWR5VGFza3MpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiByZWdpc3RyYXRpb25S
ZWFkeVRhc2tzLnZhbHVlcygpKQorICAgICAgICBjYWxsYmFjayh7IH0pOworCiAgICAgY2xlYXJQ
ZW5kaW5nSm9icygpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3luY1Rlcm1p
bmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGlu
aXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLQotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KGlkZW50
aWZpZXIpLCBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29y
a2VyRnJvbUNsaWVudDo6UmVwbHkoKSk7Ci19Ci0KLVdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcigpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxXZWJTV0NsaWVudENvbm5lY3Rpb24qPih0
aGlzKS0+aW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwotICAgIHJldHVybiBtX2lkZW50
aWZpZXI7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3lu
Y1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQgeyBpZGVudGlmaWVyIH0sIE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50OjpSZXBseSgp
KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVRocm90dGxlU3RhdGUo
KQogewogICAgIG1faXNUaHJvdHRsZWFibGUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hcmVB
bGxQYWdlc1Rocm90dGxlYWJsZSgpOwotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNldFRocm90dGxlU3RhdGUgeyBtX2lzVGhyb3R0
bGVhYmxlIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U2V0
VGhyb3R0bGVTdGF0ZSB7IG1faXNUaHJvdHRsZWFibGUgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGll
bnRDb25uZWN0aW9uOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpbml0aWFsaXplQ29ubmVjdGlv
bklmTmVlZGVkKCk7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OlN0b3JlUmVnaXN0cmF0aW9uc09uRGlzayB7IH0sIFdURk1vdmUoY2FsbGJh
Y2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA2ZGViZDhhZmYxNzBkNTQ4Y2EwYjQ4Mzcz
MjcxYzRlZmI0NzcxZWMxLi40ZTBjOTE5MGUxNjY0YTViMDAzMWU5MmE4NjhhMGQwMjhiZjk4MzBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU1dDbGllbnRDb25uZWN0aW9uIHsgc2Vzc2lv
bklEIH0pOyB9CiAgICAgfldlYlNXQ2xpZW50Q29ubmVjdGlvbigpOwogCi0gICAgV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KIAogICAgIHZvaWQgYWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7CkBAIC03NCw4ICs3NCw2
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViU1dDbGllbnRDb25uZWN0aW9u
KFBBTDo6U2Vzc2lvbklEKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRl
ZCgpOwotCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOwog
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlm
aWVyJiBzb3VyY2UpIGZpbmFsOwpAQCAtOTcsMjcgKzk1LDI2IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHNjaGVkdWxlU3RvcmFnZUpvYihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YSYpOwogCi0gICAgdm9pZCBydW5PckRlbGF5VGFza0ZvckltcG9ydChXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiB0YXNrKTsKKyAgICB2b2lkIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KEZ1bmN0aW9u
PHZvaWQoKT4mJiB0YXNrKTsKIAotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KLSAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1faWRlbnRpZmllci50b1VJbnQ2NCgpOyB9CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQudG9V
SW50NjQoKTsgfQogCiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxlU2hhcmVkTWVtb3J5KGNvbnN0
IFNoYXJlZE1lbW9yeTo6SGFuZGxlJik7CiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxlSXNJbXBv
cnRlZCgpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBlbnN1cmVDb25uZWN0aW9u
QW5kU2VuZChjb25zdCBVJiBtZXNzYWdlKTsKKyAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBQQUw6
OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIAotICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvbjsKICAgICBVbmlxdWVSZWY8V2ViU1dPcmlnaW5UYWJsZT4gbV9zd09yaWdpblRh
YmxlOwogCiAgICAgdWludDY0X3QgbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmllciB7IDAgfTsK
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWdpc3RyYXRpb25DYWxsYmFjaz4gbV9vbmdvaW5nTWF0
Y2hSZWdpc3RyYXRpb25UYXNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBHZXRSZWdpc3RyYXRp
b25zQ2FsbGJhY2s+IG1fb25nb2luZ0dldFJlZ2lzdHJhdGlvbnNUYXNrczsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjaz4gbV9vbmdvaW5nUmVnaXN0
cmF0aW9uUmVhZHlUYXNrczsKLSAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IG1fdGFz
a3NQZW5kaW5nT3JpZ2luSW1wb3J0OworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fdGFz
a3NQZW5kaW5nT3JpZ2luSW1wb3J0OwogICAgIGJvb2wgbV9pc1Rocm90dGxlYWJsZSB7IHRydWUg
fTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggYzkyNTdhYjc1Y2NhMDBlZjA5MjQwZmRlNzhjNTEyODZk
ODBjNzFjZS4uZjIyY2EzYzEzMjU3MzI4MTA0Nzg1OTBlNjQ3YmJmN2VjMTJhZWJhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNhY2hl
U3RvcmFnZVByb3ZpZGVyLmgiCkBAIC04Niw4ICs4Nyw5IEBAIFJlZjxEb2N1bWVudExvYWRlcj4g
U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBSCiAgICAgcmV0dXJuIFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3Rp
dHV0ZURhdGEpOwogfQogCi1XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1
aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIDogbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV9yZWdpc3RyYWJs
ZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAsIG1fcGFnZUdyb3VwSUQo
cGFnZUdyb3VwSUQpCiAgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQogICAg
ICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtOTgsNiArMTAwLDcgQEAgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5l
Y3Rpb24KICNlbmRpZgogewogICAgIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RvcmUpOworICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdp
c3RyYWJsZURvbWFpbiB9LCAwKTsKIH0KIAogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
On5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKQEAgLTI1OSw5ICsy
NjIsOSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRl
V29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyCiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIHN5bmNXb3JrZXJUZXJtaW5hdGlv
blRpbWVvdXQsIFdURk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIm
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1l
c3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlk
ZW50aWZpZXIsIHNvdXJjZU9yaWdpbiksIDApOworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc2Vzc2lvbklELCBkZXN0aW5hdGlvbklkZW50
aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiksIDApOwogfQog
CiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdh
c1N1Y2Nlc3NmdWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAxNmNjMGRl
ZTc1ODg0MGNjODJjNGM0MjhkYjQzOGM0MmJmOWMzY2JmLi5iNWEyYzY4YWUyMDFlNWFiNzIzYzYz
MDMzMzMxOTlmMWU1MmJlMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAg
LTUzLDcgKzUzLDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAKIGNsYXNzIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNXQ29udGV4
dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJs
aWM6Ci0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJik7CiAgICAgfldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CiAKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICAvLyBXZWJDb3JlOjpT
V0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLgotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZp
bmFsOwogICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCB3YXNTdWNjZXNzZnVsKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRp
b24oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0
U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGJvb2wpIGZpbmFsOwpAQCAtOTksNiArOTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKTsKIAogICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKICAgICB1aW50NjRfdCBtX3BhZ2VH
cm91cElEOwogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKICAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCA2NGFlMTIwZjliODk2NmFjMzAzYzU1ZDk0NzkzNDk4MDc3
YjZkOGMwLi4xNzAzMGU5ZTI5YmNmM2MzMGVkZjY4OTVkNDczNWYxZWU2ZWIyYWE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xODE4LDEzICsxODE4LDEzIEBA
IExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogfQogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGlu
aXRpYWxTZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKIHsKICAgICAvLyBX
ZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwg
YmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2Vzcwog
ICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRl
eHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlv
biBhcyB0aGUKICAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXph
dGlvbiBwdXJwb3Nlcy4KICAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdl
SUQsIHN0b3JlKSk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVj
dGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0
aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94
eUlELCBwYWdlSUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCBlYzBmYmUyMmI5ZTMzZmE5MDk1ZmU0YTViMjYzZGIwMTJjZTA4MjQ5Li5iZTcxMzAxNTg4NDA3
OGIzODQ1ZGEyYmMxOWMyOTA1NGUzNzI0ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTM2NSw3ICszNjUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsK
ICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGRj
ZWUxZjQ3NGM1YTZjZjYxOWExYjg2ZDI4NTQwMGIwNWRkZTM4NTMuLmY0NDlmNWY0OTc2MjkyY2Rm
MDZiNTgxZTgxYzJiNDdiNDE5MTIxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMTEsNyArMTExLDcgQEAgbWVzc2FnZXMgLT4g
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFs
U2Vzc2lvbklEKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVj
dCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIGRvbWFpbiwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKICAgICBSZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378180</attachid>
            <date>2019-09-06 03:14:43 -0700</date>
            <delta_ts>2019-09-06 09:41:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190906121442.patch</filename>
            <type>text/plain</type>
            <size>85004</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU0YTRlN2RmOWQyYTU0
ZDRiZGFkMjY0MTdlN2FjNzc3N2ZlZTk1My4uODZiNWI5YjU4NmIwMzExOTE5NWE1N2RlMDBhZGRl
MzdkMjNjZmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA5LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gb2JzZXJ2
YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lvbklEIHRvIGVhc2UgTmV0d29y
a1Byb2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2VzcyBjb25uZWN0aW9uLgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIExldCBjb25uZWN0aW9uIGlkZW50
aWZpZXIgYmUgc2V0IGluIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgZ2VuZXJhdGVkLgorCiAyMDE5
LTA5LTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1N0cmVhbWVyXSBZVVYgYnVmZmVycyBvbiBpTVggcGxhdGZvcm1zIGhhdmUgdG8gYmUgdHJlYXRl
ZCBhcyBSR0JBCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA3OTU5Y2E4ODQ1YzhlNDQ1NzExNmMxOGQ0ZWEwZGEwMzM1
YzcyZWEuLmJhZGExY2Y4ZTQ0ZDFhYWZmOTgyN2UyZDZhNjEzMTQ1Mzg0YjNmMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTExIEBACisyMDE5LTA5LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBwcm9jZXNzSWRlbnRpZmllciB0byBp
ZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJTV1NlcnZlckNvbm5lY3Rpb24gYmUg
c3RvcmVkIGluIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICBUaGV5IGFy
ZSBub3cga2V5ZWQgYnkgc2Vzc2lvbiBJRHMgaGVuY2Ugd2h5IFdlYlNXQ2xpZW50Q29ubmVjdGlv
biBpcyB1c2luZyB0aGUgc2Vzc2lvbiBJRCBhcyBtZXNzYWdlIGNvbm5lY3Rpb24gSUQuCisgICAg
ICAgIENyZWF0aW9uIG5vIGxvbmdlciByZXF1aXJlcyBhIHN5bmMgSVBDIHNpbmNlIHRoZSBjb25u
ZWN0aW9uIGlzIHVuaXF1ZWx5IGlkZW50aWZpZWQgYnkgaXRzIHNlc3Npb24gSUQgYW5kIGl0cyBw
cm9jZXNzIElELgorICAgICAgICBUaGVzZSBJRHMgYXJlIHN0YWJsZSBvdmVyIG5ldHdvcmsgcHJv
Y2VzcyBjcmFzaC4KKyAgICAgICAgV2l0aGluIE5ldHdvcmtQcm9jZXNzLCBhIHNlcnZlciBjb25u
ZWN0aW9uIGlzIG1hbmFnZWQgYnkgYSBTV1NlcnZlciB3aGljaCBpcyBzZXNzaW9uIElEIHNwZWNp
ZmljLgorICAgICAgICBJbiB0aGF0IGNhc2UsIHRoZSBwcm9jZXNzIGlkZW50aWZpZXIgdW5pcXVl
bHkgaWRlbnRpZmllcyB0aGUgY29ubmVjdGlvbi4KKworICAgICAgICBNb3ZlIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiBiZSBvd25lZCBieSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy4KKyAgICAgICAgSW5zdGVhZCBvZiBjcmVhdGluZyBpdCB3aGVuIHdlYnByb2Nlc3MgaXMg
Y29ubmVjdGluZyB0byBuZXR3b3JrIHByb2Nlc3MsIHVzZSBhIGRlZGljYXRlZCBJUEMgbWVzc2Fn
ZS4KKyAgICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBvbmNl
IFdlYlByb2Nlc3MgYXNrcyB0byBjcmVhdGUgaXQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBl
eGlzdGluZyBXZWJQcm9jZXNzLCBpbiBjYWNoZSBvciBydW5uaW5nIHBhZ2VzLCB0byBydW4gc2Vy
dmljZSB3b3JrZXJzIGFzIHdlbGwuCisgICAgICAgIEEgY29udGV4dCBjb25uZWN0aW9uIG1hcCBp
cyBrZXB0IGluIE5ldHdvcmsgUHJvY2VzcyB0byByZXVzZSBjb250ZXh0IGNvbm5lY3Rpb25zIHNp
bmNlIHRoZXNlIGNvbm5lY3Rpb25zIGFyZSBub3Qgc2Vzc2lvbklEIHNwZWNpZmljLgorCisgICAg
ICAgIE1pZ3JhdGUgZnJvbSBhIHNpbmdsZSBib29sZWFuIHRvIGEgSGFzaFNldCB0byB0cmFjayB3
aGV0aGVyIHNvbWUgY29ubmVjdGlvbnMgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGNyZWF0
ZWQuCisgICAgICAgIFByZXZpb3VzbHkgaWYgdHdvIHJlcXVlc3RzIHRvIGNyZWF0ZSBjb25uZWN0
aW9ucyB3ZXJlIGRvbmUgc2hvcnRseSBvbmUgYWZ0ZXIgdGhlIG90aGVyIG9uIGRpZmZlcmVudCBy
ZWdpc3RyYWJsZQorICAgICAgICBkb21haW5zLCB0aGUgc2Vjb25kIHJlcXVlc3Qgd291bGQgbm90
IGJlIHByb2Nlc3NlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmb3JFYWNoU1dTZXJ2ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dDb250
ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lz
dGVyU1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVO
ZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpleGlzdGluZ1NlcnZpY2VXb3JrZXJD
b25uZWN0aW9uRm9yU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6V2ViU1dDbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjp+V2ViU1dDbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDbGllbnRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hp
bmdTY3JpcHRJblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6YWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SW5TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0
aW9uUHJvbWlzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0
Y2hSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRD
b25uZWN0aW9uOjp3aGVuUmVnaXN0cmF0aW9uUmVhZHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OmNhbmNlbEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
bGllbnRDb25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjbGVhcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlVGhyb3R0bGVT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RvcmVSZWdp
c3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxOS0wOS0wNiAgUGF0
cmljayBHcmlmZmlzICA8cGdyaWZmaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
IERvIG5vdCBlbmFibGUgdGhlIHNhbmRib3ggaW4gU25hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmluZGV4IDczOTFj
NGMyMWEzNmQ1MGQ3N2YyMDZkN2IzZWViZDA1YjA2NDA0ZTAuLjc2MGM0Y2QwYTNjNmVlZDc1ZThh
ODY4NjYyZTk1YzQ5MDU5MDE2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGUKIAogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3Nh
Z2UgPSB7IG1lc3NhZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwb3J0c09yRXhjZXB0aW9u
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CiAgICAgYXV0byBzb3VyY2VJZGVudGlmaWVyID0gZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5pZGVudGlm
aWVyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSks
IGRlc3RpbmF0aW9uSWRlbnRpZmllciA9IGlkZW50aWZpZXIoKSwgc291cmNlSWRlbnRpZmllciwg
c291cmNlT3JpZ2luID0gY29udGV4dC5vcmlnaW4oKS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJs
ZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0gY29udGV4dC5zZXNzaW9uSUQo
KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSWRlbnRpZmllciA9IGlk
ZW50aWZpZXIoKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gY29udGV4dC5vcmln
aW4oKS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25u
ZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQotICAg
ICAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVz
dGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBz
b3VyY2VPcmlnaW4pOworICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoc2Vzc2lvbklELCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2Us
IHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiAgICAgfSk7CiAKICAgICByZXR1cm4g
eyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGZlMGMwODQ5MmMzNTIxN2EyMzZlMjMyYzA2YmM1
YWI2MzY3ODg2YTEuLmZmZmI3MTFkZTBiMmZkZmI3ZGFhOTFkOTYwZTQ0YTNhOWY5MTAzZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRl
ZChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHNlcnZpY2VXb3JrZXJGYWlsZWRUb1N0YXJ0KE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaEluc3RhbGwoT3B0aW9u
YWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA5MzI2YTNiYWM2NTlhMjQ2NzA1
ZTkyMGE4ODg0NmRmNGQwZTk2OWIwLi45Y2Q4ZGUwZDA3MzU3M2Q1ZTg1M2MzNzk5NGJhYzUzNTVl
OTkyMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcApAQCAtNTAsOSArNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBTZWNvbmRzIHRlcm1pbmF0aW9uRGVsYXkgeyAxMF9zIH07CiAKLVNXU2VydmVyOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uKFNXU2VydmVyJiBzZXJ2ZXIpCitTV1NlcnZlcjo6Q29ubmVjdGlv
bjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyLCBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgOiBtX3NlcnZlcihzZXJ2ZXIpCi0gICAgLCBtX2lkZW50aWZpZXIoU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmgKaW5kZXggMGM1N2EzNTdlZmUzZWNiNGY0MTk3Y2M5MWYwODcwMjIwYjY2NzAwZC4u
YjM5NGViZjNhNjVhYjEwOTBiZmFkODJlMWVkNDhkNjBlNGI5MmYwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtNTYsNiArNTYs
NyBAQCBjbGFzcyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNlcnZpY2VX
b3JrZXJTdGF0ZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKK3N0cnVjdCBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQ7CkBAIC04Niw2ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB2b2lkIHNldFJlZ2lzdHJhdGlvblVwZGF0ZVZpYUNhY2hlKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFuZ2UoY29uc3QgSGFz
aFNldDxEb2N1bWVudElkZW50aWZpZXI+JiBjb250ZXh0SWRlbnRpZmllcnMsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJEYXRhJiBuZXdDb250cm9sbGVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCByZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZp
ZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYpID0gMDsKIApAQCAtOTMsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0
IFNXU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlcjsgfQogCiAgICAgcHJv
dGVjdGVkOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb25uZWN0aW9uKFNXU2Vy
dmVyJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24oU1dTZXJ2ZXImLCBJZGVu
dGlmaWVyKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggYWMzYTIxYTFkNDc4ZTY1YjI0MWY2NTM4MzNiNTliOWZmNDUzZDQxMS4uYjFj
ZDJjZjk3M2MxNWM2MmRlZTNkYWMyMjFhOWYyNTYyNTg4OTkxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTIxNCwyMSArMjE0LDIyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc3dDb25uZWN0aW9uID0gbV9z
d0Nvbm5lY3Rpb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgaWYgKGF1
dG8gc3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpCiAgICAgICAgICAgICBzd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byog
Y29udGV4dENvbm5lY3Rpb24gPSBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0
UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7Ci0gICAgICAgICAgICBjb250
ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cisg
ICAgICAgIEFTU0VSVChtX3N3Q29udGV4dENvbm5lY3Rpb24pOworICAgICAgICBpZiAobV9zd0Nv
bnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3Jr
UHJvY2Vzcy0+Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25u
ZWN0aW9uKSkgewotICAgICAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVGZXRj
aFRhc2tNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICBBU1NFUlQobV9zd0Nv
bnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgewor
ICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlRmV0Y2hUYXNrTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KQEAgLTI2OSw3ICsyNzAsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rp
b25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
VHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgaWYgKGF1dG8gc3dDb25u
ZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCiAg
ICAgICAgICAgICBzd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCByZXBseSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yODYsMTAgKzI4
NywxOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoUmVmUHRyPFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbj4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nl
c3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlv
bikpIHsKLSAgICAgICAgLy8gU2VydmljZSBXb3JrZXIgcHJvY2VzcyBleGl0ZWQuCi0gICAgICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKHNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGF1dG8mIHJlZ2lz
dHJhYmxlRG9tYWluID0gbV9zd0NvbnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJsZURvbWFpbigp
OworCisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOwor
CisgICAgICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7CisgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0oYXV0byYgc2VydmVyKSB7CisgICAg
ICAgICAgICBzZXJ2ZXIubWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWlu
YXRlZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICBpZiAoc2VydmVyLm5lZWRzU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9t
YWluKSkKKyAgICAgICAgICAgICAgICBzZXNzaW9uSUQgPSBzZXJ2ZXIuc2Vzc2lvbklEKCk7Cisg
ICAgICAgIH0pOworICAgICAgICBpZiAoc2Vzc2lvbklEKQorICAgICAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFp
biwgKnNlc3Npb25JRCk7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7CkBAIC04NzgsMTggKzg4OCwyMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp1bnJlZ2lzdGVyU1dDb25uZWN0aW9ucygpCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29y
a1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGF1dG8gY29ubmVj
dGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNz
LCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKLSAgICAKLSAgICBTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29u
bmVjdGlvbi0+aWRlbnRpZmllcigpOwotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbiAtICVzIiwg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
PihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgbV93ZWJQcm9j
ZXNzSWRlbnRpZmllciwgc2Vzc2lvbklEKTsKIAotICAgIEFTU0VSVCghbV9zd0Nvbm5lY3Rpb25z
LmNvbnRhaW5zKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSk7Ci0gICAgbV9zd0Nvbm5lY3Rp
b25zLmFkZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbWFrZVdlYWtQdHIoKmNvbm5lY3Rp
b24pKTsKKyAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXNzaW9uSUQudG9V
SW50NjQoKSkpOworICAgIG1fc3dDb25uZWN0aW9ucy5hZGQoc2Vzc2lvbklELnRvVUludDY0KCks
IG1ha2VXZWFrUHRyKCpjb25uZWN0aW9uKSk7CiAgICAgc2VydmVyLmFkZENvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4pCit7CisgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUobV9uZXR3b3JrUHJvY2VzcywgcmVnaXN0
cmFibGVEb21haW4sIG1fY29ubmVjdGlvbi5nZXQoKSk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNz
LT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikgeworICAgICAgICBzZXJ2ZXIuc2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKm1fc3dDb250ZXh0Q29ubmVjdGlvbik7Cisg
ICAgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDQyYzE3ZTFi
MDViNDA2YjM5NGM5NTRhYjc5YzJhMzg2NDk5MjQxMzQuLmU4YTU2ZmQ3ZTJkMWQ1MWU4MzkwMjc1
NzkyNmM3ZjlhNTQ5MGZlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTY4LDYgKzY4
LDcgQEAgY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiBjbGFzcyBOZXR3b3JrU29ja2V0U3Ry
ZWFtOwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OwogY2xhc3MgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogdHlwZWRl
ZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogCiBuYW1lc3BhY2UgTmV0d29ya0Nh
Y2hlIHsKQEAgLTIwOCw3ICsyMDksOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciYmKT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVj
dGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJT
V0Nvbm5lY3Rpb25zKCk7CiAjZW5kaWYKIApAQCAtMzE5LDcgKzMyMSw4IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYWtQdHI8V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIFJlZlB0cjxXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmZDA5MmYzMTQ3OTMyNTRjNGZiNTQ3OThmYjdlNzA2
MDdlMzZiNjcxLi43NzdhZGZiN2NiNDlkN2U2YWNiMTI2NzVmNGMxYWNmMjk1YzlmNGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgxLDcgKzgxLDgg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNo
U1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIp
IFN5bmNocm9ub3VzCisgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKICNlbmRpZgogCiAgICAgQ3JlYXRlTmV3TWVzc2Fn
ZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDEs
IHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDE0MzdkMWFl
MWNkM2VmZTA5MWJkNGQ1MDgzNGUyNDAyMzJiNTEyOTEuLjE4NzI2ZjZlM2RiY2JmMDRlZDM4MjJk
MGI4ZjM3YmM4ZTRjMTQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMTUsMTcgKzIxNSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBB
U1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICAg
ICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhdXRvKiB3ZWJTV0Nvbm5lY3Rpb24gPSBjb25u
ZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7Ci0g
ICAgICAgICAgICB3ZWJTV0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlm
CiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKIH0KIApAQCAtNDE0LDcgKzQwMyw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8c3RkOjpw
YWlyPElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4KICNlbmRp
ZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtl
clByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBjcmVhdGVJUENDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCk7CiAgICAgaWYgKCFpcGNDb25uZWN0aW9uKSB7CkBAIC00MzEsMjQgKzQy
MCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShpcGNDb25uZWN0aW9uLT5zZWNvbmQpKTsKIAogICAgIGNvbm5lY3Rpb24uc2V0T25MaW5l
U3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKLSAgICAK
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nl
c3MpIHsKLSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRs
ZW1lbnQoKSk7Ci0gICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9j
ZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFibGVEb21haW4s
IGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwg
Y29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAgICAgICBtX3dhaXRpbmdGb3JTZXJ2
ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIGZvciAoYXV0
byogc2VydmVyIDogU1dTZXJ2ZXI6OmFsbFNlcnZlcnMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOwotICAg
IH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nlc3MpOwotICAg
IFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7Ci0jZW5kaWYKIAogICAgIG1fc3RvcmFn
ZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOwogfQpA
QCAtMjM5MCwzNiArMjM2MSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRTYW5kYm94RXh0
ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZQogI2VuZGlmIC8v
IEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0
aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBt
X3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pCi0g
ICAgICAgICAgICByZXR1cm4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5nZXQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rp
b25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+JiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKLXsKLSAgICBhdXRvJiByZWdpc3Ry
YWJsZURvbWFpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnJlZ2lzdHJhYmxlRG9tYWlu
KCk7Ci0gICAgCi0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3Nl
ZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMudmFs
dWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxlRG9t
YWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBpZiAobmVlZHNT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4pKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJDb25uZWN0aW9u
IHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3RpbGwgbmVlZGVk
LCByZWxhdW5jaGluZyBpdCIpOwotICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXVEY6Om51bGxvcHQpOwotICAgIH0KLX0KLQotYm9vbCBO
ZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25z
dAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Zm9yRWFjaFNXU2VydmVyKGNvbnN0IEZ1bmN0aW9uPHZv
aWQoU1dTZXJ2ZXImKT4mIGNhbGxiYWNrKQogewotICAgIHJldHVybiBXVEY6OmFueU9mKG1fc3dT
ZXJ2ZXJzLnZhbHVlcygpLCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJuIHN3
U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBt
X3N3U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soKnNlcnZlcik7CiB9CiAKIFNX
U2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKQEAgLTI0NDcsNDAgKzIzOTIsMzYgQEAgV2ViU1dPcmlnaW5TdG9yZSogTmV0
d29ya1Byb2Nlc3M6OmV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9u
SUQKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PFdlYlNXT3JpZ2luU3RvcmUmPihzd1NlcnZlci0+
b3JpZ2luU3RvcmUoKSk7CiB9CiAKK2Jvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjphbnlPZiht
X3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7CisgICAgICAgIHJldHVy
biBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0pOworfQorCiBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKQogewogICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmdldChy
ZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
LSAgICBpZiAobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCisg
ICAgaWYgKG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29u
dGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKLSAgICBpZiAoc2Vzc2lvbklEKQotICAgICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NG
b3JFeHBsaWNpdFNlc3Npb24ocmVnaXN0cmFibGVEb21haW4sICpzZXNzaW9uSUQpLCAwKTsKLSAg
ICBlbHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwotfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQotewotICAgIGlmIChhdXRvIGNvbm5l
Y3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGRlc3RpbmF0aW9uSWRlbnRpZmllci5z
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5jb250ZXh0SWRl
bnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2lu
KTsKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4p
OworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50
aWZpZXImIHNvdXJjZSwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRl
bnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
bV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAg
IGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKGRlc3RpbmF0aW9uLCBXVEZN
b3ZlKG1lc3NhZ2UpLCBzb3VyY2UpOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gc3dTZXJ2
ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY29ubmVjdGlvbihkZXN0aW5hdGlvbklkZW50aWZpZXIu
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuY29udGV4dElk
ZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdp
bik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9u
KFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQocGFyZW50
UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICBBU1NFUlQoIW1fc3dT
ZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotICAg
IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIG1ha2VX
ZWFrUHRyKGNvbm5lY3Rpb24pKTsKICAgICBhdXRvKiBzdG9yZSA9IGV4aXN0aW5nU1dPcmlnaW5T
dG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKHN0b3Jl
KTsKICAgICBpZiAoc3RvcmUpCkBAIC0yNDg5LDI2ICsyNDMwLDIxIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYg
Y29ubmVjdGlvCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5l
Y3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIEFTU0VSVCht
X3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKS5nZXQoKSA9
PSAmY29ubmVjdGlvbik7Ci0gICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0
aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGF1dG8qIHN0b3JlID0gZXhpc3RpbmdTV09yaWdp
blN0b3JlRm9yU2Vzc2lvbihjb25uZWN0aW9uLnNlc3Npb25JRCgpKSkKICAgICAgICAgc3RvcmUt
PnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byYgcmVnaXN0cmFi
bGVEb21haW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7
Ci0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFJFTEVB
U0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIG5vIGxvbmdl
ciBuZWVkZWQsIHRlcm1pbmF0aW5nIGl0Iik7Ci0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi50ZXJtaW5hdGUoKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZl
cnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJh
YmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJU
KCFtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24ucmVnaXN0
cmFibGVEb21haW4oKSkpOworICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLnJlbW92ZShj
b25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNvbm5lY3Rpb24p
OworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlv
bihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgQVNT
RVJUKG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24ucmVnaXN0cmFi
bGVEb21haW4oKSkgPT0gJmNvbm5lY3Rpb24pOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IDA5MGQ0N2YwMWFkMmRjZWQ0OTlhYmU4OTdmNzBiOWE0Y2U5MDdjM2EuLjlkODg2ZmQ4NDJi
YWUwZmFhOWJkODhmMzU1MjcwNmVmZDhmZjZlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMwMCwxNiArMzAwLDE3IEBAIHB1YmxpYzoK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIHZvaWQgY3JlYXRlU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIE9w
dGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgUEFMOjpTZXNzaW9u
SUQpOwogICAgIAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9u
KFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIAotICAgIHZvaWQgc3dDb250ZXh0Q29ubmVj
dGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7
Ci0gICAgCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uVG9D
b250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZv
aWQgY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoUmVmPFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbj4mJik7CisgICAgdm9pZCByZWdpc3RlclNXQ29udGV4dENvbm5lY3Rp
b24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVy
U1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKwor
ICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21h
aW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lkIGZv
ckVhY2hTV1NlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNXU2VydmVyJik+Jik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zOTUsNyArMzk2LDcgQEAg
cHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQg
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+
JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PElQQzo6QXR0YWNobWVudD4mJik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb24+LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0
ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC00NjQsMTMg
KzQ2NSwxMiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lk
IGRpZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFj
aG1lbnQmKTsKICAgICAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJ
ZGVudGlmaWVyJiBzb3VyY2UsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIp
OworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFBB
TDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlv
biwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICAKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKICAgICAKICAgICBXZWJTV09yaWdpblN0b3JlKiBl
eGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKLSAg
ICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAgICB2b2lkIGFk
ZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmIHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYp
OwogI2VuZGlmCkBAIC01NDAsMTIgKzU0MCwxMSBAQCBwcml2YXRlOgogICAgIExvY2sgbV9zdG9y
YWdlVGFza011dGV4OwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNo
TWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKLSAgICBib29sIG1f
d2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qPiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOwogICAgIGJvb2wgbV9z
aG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2Ug
fTsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1fc3dEYXRhYmFzZVBhdGhz
OwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
V1NlcnZlcj4+IG1fc3dTZXJ2ZXJzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+PiBtX3N3U2Vy
dmVyQ29ubmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
bV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggYmYyMWEyZGM3YmFkYWY2MjAzOTVjZDA1YzYxZWQyNDEyMjkz
MmY5ZC4uYWIzYmFiYjQ4NGU4N2ZiMzMzNzNkOWE4OTZjMjUxMmQxOTY1MWQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0IFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBh
IFdlYlByb2Nlc3MKLSAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VX
b3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
bikgLT4gKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50aWZpZXIpIEFz
eW5jCisgICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFj
aG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAg
U2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQpAQCAtMTUzLDEwICsxNTMs
NyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0
Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBj
YWNoZVN0b3JhZ2VEaXJlY3RvcnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhh
bmRsZSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgUG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNv
dXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCi0KLSAgICBQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlv
biwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlLCBXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotCisgICAgUG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2Fn
ZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgU3Ry
aW5nIHNvdXJjZU9yaWdpbikKICAgICBEaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5KCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IDZiY2I5OWExMDBmODZiNjk5Yzc3MTVkNWI1ZjQ0ZjhlYWY2ODVmYmEuLjkzYmY1
MTk4NzY3NjFmMDczMDFmNGIwYmYyMjRlNzY3YWU0YThkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC02MSw4ICs2MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogI2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6IiBm
bXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRiht
X3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVw
IC0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAot
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBTV1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBTV1NlcnZlcjo6Q29ubmVjdGlv
bihzZXJ2ZXIpCitXZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbihO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFNXU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIs
IFNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgOiBTV1NlcnZlcjo6Q29ubmVjdGlvbihzZXJ2ZXIs
IG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihw
cm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25J
RCkKICAgICAsIG1fY29udGVudENvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fbmV0d29y
a1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCkBAIC0yNTMsMTMgKzI1MywxMyBAQCB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihTZXJ2aWNlV29ya2VySm9iRGF0
YSYmIGpvYkRhdGEpCiAgICAgc2VydmVyKCkuc2NoZWR1bGVKb2IoV1RGTW92ZShqb2JEYXRhKSk7
CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmll
ciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChE
b2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewogICAgIGF1dG8q
IHNvdXJjZVNlcnZpY2VXb3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIGlmICghc291cmNlU2VydmljZVdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudCB7IGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFdURk1vdmUo
bWVzc2FnZSksIHNvdXJjZVNlcnZpY2VXb3JrZXItPmRhdGEoKSwgc291cmNlT3JpZ2luIH0pOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdl
LCBzb3VyY2VTZXJ2aWNlV29ya2VyLT5kYXRhKCksIHNvdXJjZU9yaWdpbiB9KTsKIH0KIAogdm9p
ZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lz
dHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
dG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uaAppbmRleCA5MDAyM2Q2NjE4NGZkMmQxODcxZDQ0ODk2MTdhMGY5ZjY3MmEwMjhi
Li5hZGU4ZTdlM2E2MzBjNjE1MGI5MWFhOWFiMjAzMDY2NTU2OWM3NzUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vz
c0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01Myw3ICs1NCw3
IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24g
OiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBJ
UEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCk7CisgICAgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24m
LCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOwogICAgIFdlYlNX
U2VydmVyQ29ubmVjdGlvbihjb25zdCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mKSA9IGRlbGV0ZTsK
ICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKQEAgLTY0LDkgKzY1LDYgQEAg
cHVibGljOgogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9zZXNzaW9uSUQ7IH0KIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZp
ZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xp
ZW50SWRlbnRpZmllciYgc291cmNlKTsKLQogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnQgU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAg
ICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CkBAIC05NCw2ICs5Miw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOwogICAgIHZvaWQgc3lu
Y1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXImJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAorICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKKwogICAg
IHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViQ29yZTo6U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJikgZmluYWw7CiAKICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlYWJsZTsgfQpAQCAtMTAyLDggKzEwMiwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKTsK
ICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRp
b24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7CisKICAgICBJUEM6OkNvbm5l
Y3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9j
b250ZW50Q29ubmVjdGlvbi5wdHIoKTsgfQotICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaWRlbnRpZmllcigpLnRvVUludDY0KCk7
IH0KKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCBzZW5kVG9Db250ZXh0UHJvY2VzcyhXZWJDb3JlOjpTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBVJiYgbWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggYmZlNDAzZGY1
ZWJhMjg5NDY5NzU3YzMwNDgxODE0ZGU2YjVhNzMzMC4uN2IxZTkyMDcxMDljZDE0NTA3NmI5YWE3
MjAwOTk1MTE5ZjM4YmVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw5ICs0NiwxMyBAQCBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3Jr
UHJvY2VzcyYgbgogICAgICwgbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAg
ICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogeworICAgIG1fbmV0d29ya1By
b2Nlc3MtPnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CiB9CiAKLVdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigp
ID0gZGVmYXVsdDsKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+dW5yZWdpc3Rl
clNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dAogewpAQCAtNjUsNiArNzEsMTIgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNvbm5lY3Rpb25DbG9zZWQoKQogICAgICAgICBmZXRjaC0+ZmFpbChSZXNvdXJjZUVycm9y
IHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBXb3JrZXIgY29u
dGV4dCBjbG9zZWQiX3MgfSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbikKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3
U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvbm5lY3Rpb24oZGVzdGluYXRpb25JZGVudGlm
aWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLmNvbnRl
eHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwor
fQorCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VX
b3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VX
b3JrZXIgeyBkYXRhLCBzZXNzaW9uSUQsIHVzZXJBZ2VudCB9KTsKQEAgLTExNyw3ICsxMjksMTcg
QEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaFNraXBXYWl0
aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpCiB7Ci0gICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+c3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoKnRoaXMpOwor
ICAgIGlmIChtX25ldHdvcmtQcm9jZXNzLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nl
c3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVybWluYXRpbmcgaXQiKTsKKyAgICB0ZXJtaW5hdGUo
KTsKKworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVhY2hTV1NlcnZlcihbJl0oYXV0byYgc2Vy
dmVyKSB7CisgICAgICAgIHNlcnZlci5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWlu
QXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIH0pOworCisgICAgY29ubmVj
dGlvbkNsb3NlZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDkwYTA3ZWEyNGJiYWQzMzc1
NjdhNGJlYTM3MjI1ZjM4MjIxMWFhNWIuLjIwZWMxNWU2YmY5OWY4ZWQ2OTJkMGJjMmI5ZDJkYTVk
MGU3ZjhjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0
IEZldGNoT3B0aW9uczsKK3N0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIH0KIApAQCAtODIsNiArODMsOCBAQCBwcml2YXRlOgogICAgIElQQzo6
Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICB1
aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCisgICAg
dm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbik7CisKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9j
ZXNzCiAgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KSBmaW5hbDsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggOTk0OWUz
ZDQzNWYyNDdiNTBiZmQ0NDRkNTA2ZGUyYTk1MjdkYzUyZC4uZTMxNThmYzkwYjM1NzRlNGI4NjBi
ZDI0MWMyN2ExYjA0MjZlYjgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zNiw2ICszNiw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiB7CiAgICAgTWF0Y2hB
bGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKHVpbnQ2
NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBT
dHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0cmluZyBtaW1lVHlwZSk7CisgICAgUG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVzdGluYXRpb24s
IHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0
NDkwMWE4YzM4N2I3ODAwNTA5ODdmOWRiMTY1ZjY0NDBmMmIxNDBiLi41MWIzZTkwODA2NmU1Zjhj
NDFlZDgwMWY2MWFlOWIxMDE3ZGY0ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0MiwxNiArMTQy
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rpb25SZXF1ZXN0
SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHkpCiB7Ci0gICAgYm9v
bCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7Ci0gICAgUmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW47Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChp
czxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpKSB7Ci0gICAgICAg
IGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAgICByZWdpc3RyYWJsZURvbWFp
biA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nlc3NQcm94eSku
cmVnaXN0cmFibGVEb21haW4oKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGNvbm5lY3Rpb24oKS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVu
dGlmaWVyKCksIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIHJlZ2lzdHJhYmxlRG9tYWluIH0sIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtl
V2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1
dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgY29ubmVjdGlvbigpLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50
aWZpZXIoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2ViUHJvY2Vz
c1Byb3h5ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlvblJlcXVlc3RJ
ZGVudGlmaWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgewogICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjA5LDEyICsxMjAw
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJs
b2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbikKLXsKLSAgICBtX3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
biksIFdURjo6bnVsbG9wdCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNz
aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBtX3Byb2Nlc3NQ
b29sLmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhp
cywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmlu
ZGV4IDgwZGZlNjBhMjQ4NDQzZGQ5NWQxYmU5MGE5ZjE0MWJjMWJiYzFiYzkuLjg4ZGE3YzA0ZjY2
MmM4N2FiODMzNDkyZGI4ODkwOTY3N2M0NjM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMzgsOCArMjM4
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJl
cXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU0YWZlNGI1YjcxYWY2Yjdk
MzQ1ZjU2YjBjZjFjMTNhZGRmNjNlNWEuLmE2ZGJiN2M1YzkzNjMzYzIxNDRmZWQ5ZGY5NjY5ZjNi
ZjUzYWY2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYxLDggKzYxLDcg
QEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW4pCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBleHBsaWNpdFNlc3Npb24pCisg
ICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAjZW5kaWYKIAogICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWludDY0
X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkKSAt
PiAoT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4YjNh
NDJjZDA3MWY1NDFmMzA0ZTI1YTRhM2IwY2JkNTA0NTA1ZTkxLi5hNGJhOTJhOTA4ZjZkYjQwZGU3
ZTk5Y2QzOTFmNWFjNjZkZDFmZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzYsOSArNzYsOSBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5j
aGVyOjpMYXVuY2hPcHRpb25zJgogICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlv
bkRhdGEuYWRkKCJyZWdpc3RyYWJsZS1kb21haW4iX3MsIHJlZ2lzdHJhYmxlRG9tYWluKCkuc3Ry
aW5nKCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gaW5p
dGlhbFNlc3Npb25JRCkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6c3RhcnQoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3Jv
dXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNl
V29ya2VyUGFnZUlELCBzdG9yZSwgaW5pdGlhbFNlc3Npb25JRC52YWx1ZU9yKFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpIH0sIDApOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7
IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2Vydmlj
ZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3Ry
YWJsZURvbWFpbigpLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCmlu
ZGV4IGQ4MGMxYTViMmIwMTY2ODA4OWIzNjE0MmVmOTFlM2RkMzJmYjRhYjEuLmU2NTY3NTUxOTUz
ZTAzNjZlODRjMzhjYTU2ZjQ4NjQ1MTgzOWE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNv
bnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7CiAKLSAgICB2b2lkIHN0YXJ0KGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gaW5pdGlh
bFNlc3Npb25JRCk7CisgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwg
UEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBl
MzJlYjQzNzYzNTQwYjk2YTAxMTgzMzM4NDEyMWVmMDA5M2E1YjZiLi44MTk2NzJjZmE5MTVmMjli
MTk4MzI0NWVjOTI2NGNiMzkzM2EwOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1By
b3gKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURv
bWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVF9VTlVTRUQocHJv
eHksICZwcm94eSA9PSBtX25ldHdvcmtQcm9jZXNzLmdldCgpKTsKIApAQCAtNzEwLDkgKzcxMCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAKICAgICBtX21heUhhdmVSZWdpc3RlcmVkU2Vy
dmljZVdvcmtlcnMuY2xlYXIoKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUgPSBudWxscHRyOwotICAgIGlmIChzZXNzaW9uSUQpCi0gICAgICAgIHdlYnNpdGVEYXRh
U3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ05vbkRlZmF1bHREYXRhU3RvcmVGb3JT
ZXNzaW9uSUQoKnNlc3Npb25JRCk7CisgICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFT
dG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNl
c3Npb25JRChzZXNzaW9uSUQpOwogCiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAg
ICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggZjk0MzY3ZmJhOWMxZjY2ZjRiM2M5NDBkZTE2NzRiOGRkYTZhNTdh
NC4uMGE2ZDhjZWFkNTE1YTI2MWJkY2E3Y2MxNDVlYzVkYWJkMWJjNWQyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zODEsNyArMzgxLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmll
cikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJv
eHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25J
RD4pOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBQQUw6OlNlc3Npb25JRCk7CiAgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGll
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQogICAgIHZvaWQg
c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7
IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9CiAg
ICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25zdCB7
IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYmZjNWZkNjIwMWVjZmE5YTMzNzc1MGVkZWMyMTJl
MjUzYjMyYTNjNS4uNjIzMjQzMGM1OTAyNzcyOTE4MWFkMzJmOGVlZGZlYjQxMTQwMGNhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gc2VydmljZVdvcmtlckNv
bm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIuZ2V0KG1ha2VPYmplY3RJZGVu
dGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0
aW9uSUQoKSkpOworICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uID0gbV9zd0Nv
bm5lY3Rpb25zQnlTZXNzaW9uLmdldChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAg
IGlmIChzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJD
b25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjAyLDggKzIwMiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgYXV0byBjb25uZWN0aW9ucyA9IHN0ZDo6ZXhjaGFuZ2UobV9zd0Nv
bm5lY3Rpb25zQnlJZGVudGlmaWVyLCB7IH0pOwotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6
IGNvbm5lY3Rpb25zLnZhbHVlcygpKQorICAgIGF1dG8gc3dDb25uZWN0aW9ucyA9IHN0ZDo6ZXhj
aGFuZ2UobV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLCB7IH0pOworICAgIGZvciAoYXV0byYgY29u
bmVjdGlvbiA6IHN3Q29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24tPmNv
bm5lY3Rpb25Ub1NlcnZlckxvc3QoKTsKICNlbmRpZgogfQpAQCAtMjY3LDI5ICsyNjcsMTAgQEAg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmlkYkNv
bm5lY3Rpb25Ub1NlcnZlckZvclNlc3MKIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNWYWxpZCgpKTsK
LSAgICByZXR1cm4gKm1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5lbnN1cmUoc2Vzc2lvbklELCBb
c2Vzc2lvbklEXSB7CisgICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZW5zdXJl
KHNlc3Npb25JRC50b1VJbnQ2NCgpLCBbc2Vzc2lvbklEXSB7CiAgICAgICAgIHJldHVybiBXZWJT
V0NsaWVudENvbm5lY3Rpb246OmNyZWF0ZShzZXNzaW9uSUQpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIH0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92ZVNXQ2xpZW50
Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgQVNT
RVJUKG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllci5jb250YWlucyhjb25uZWN0aW9uLnNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKLSAgICBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZp
ZXIucmVtb3ZlKGNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSk7Ci19Ci0K
LVNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpp
bml0aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgY29ubmVj
dGlvbikKLXsKLSAgICBBU1NFUlQoY29ubmVjdGlvbi5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpOwot
ICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAgICBib29sIHJl
c3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbi5zZXNz
aW9uSUQoKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJs
aXNoU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZXBseShpZGVudGlmaWVyKSwgMCk7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uc0J5
SWRlbnRpZmllci5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25zQnlJ
ZGVudGlmaWVyLmFkZChpZGVudGlmaWVyLCAmY29ubmVjdGlvbik7Ci0KLSAgICByZXR1cm4gaWRl
bnRpZmllcjsKLX0KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6bWVz
c2FnZXNBdmFpbGFibGVGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgbWVzc2FnZVBvcnRJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAwMDcx
ZGIxZjc2YjYwZjYxNTVhZTA0YTM2YjY4ZGI5NGJmMTY3MTYxLi5jMGE4YzNmNDk1ZmVmYzM1NWZl
NmViNjc4NGZkNWEwMWI1ZGFkOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNzYsMTEg
Kzc2LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgV2ViU1dDbGllbnRDb25uZWN0aW9uKiBleGlzdGluZ1NlcnZpY2VXb3JrZXJDb25uZWN0aW9u
Rm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIHsgcmV0dXJuIG1fc3dDb25uZWN0
aW9uc0J5U2Vzc2lvbi5nZXQoc2Vzc2lvbklEKTsgfQorICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlv
biogZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSB7IHJldHVybiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZ2V0KHNlc3Np
b25JRC50b1VJbnQ2NCgpKTsgfQogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgc2VydmljZVdv
cmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLQotICAgIFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaW5pdGlhbGl6ZVNXQ2xpZW50Q29ubmVjdGlv
bihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZVNXQ2xpZW50Q29ubmVj
dGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTEz
LDggKzExMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViU1dDbGllbnRDb25uZWN0
aW9uPj4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViU1dDbGllbnRDb25uZWN0aW9uKj4gbV9zd0Nv
bm5lY3Rpb25zQnlJZGVudGlmaWVyOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJT
V0NsaWVudENvbm5lY3Rpb24+PiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb247CiAjZW5kaWYKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGU3NWVlZmFkMTU0NzNhNzBhY2VkYmE4MjYzM2Iw
NTQ0NTAxYTIyYzAuLjhiYjgwNzBmYjhkOWVlMTAyNzFiOTU3ZDU0ZDhiZGM0MDFkOTMxYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5o
IgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUuaCIKICNpbmNs
dWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YS5oPgpAQCAtNTUsNzcgKzU3LDYxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9pZGVudGlmaWVy
KG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihQ
cm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSkpCiAgICAgLCBtX3N3T3JpZ2luVGFibGUo
bWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigpKQogewogICAgIEFTU0VSVChtX3Nlc3Np
b25JRC5pc1ZhbGlkKCkpOwotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNo
U1dTZXJ2ZXJDb25uZWN0aW9uIHsgc2Vzc2lvbklEIH0pOwogfQogCiBXZWJTV0NsaWVudENvbm5l
Y3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24oKQogewotICAgIGlmIChtX2Nvbm5lY3Rpb24p
Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLnJlbW92ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhpcyk7CisgICAgY2xlYXIoKTsK
IH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uSWZO
ZWVkZWQoKQorSVBDOjpDb25uZWN0aW9uKiBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvJiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKLQotICAg
IG1fY29ubmVjdGlvbiA9ICZuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOwot
ICAgIG1faWRlbnRpZmllciA9IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5pbml0aWFsaXplU1dD
bGllbnRDb25uZWN0aW9uKCp0aGlzKTsKLQotICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjplbnN1
cmVDb25uZWN0aW9uQW5kU2VuZChjb25zdCBVJiBtZXNzYWdlKQotewotICAgIGluaXRpYWxpemVD
b25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBzZW5k
KG1lc3NhZ2UpOworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCiB2b2lkIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYgam9iRGF0YSkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpvYkluU2VydmVyKGpvYkRhdGEpKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNjaGVkdWxlSm9iSW5TZXJ2
ZXIgeyBqb2JEYXRhIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNo
RmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJl
c3VsdCkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJlc3VsdCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hpbmdTY3Jp
cHRJblNlcnZlciB7IHJlc3VsdCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRT
ZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkFkZFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIgeyBp
ZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVtb3ZlU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkluU2VydmVyKGlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlciB7IGlk
ZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50
aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU2VydmljZVdv
cmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJ
ZGVudGlmaWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIH0sIDApOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50
aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
CiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwg
ZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNl
ckFnZW50IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0YSwgY29udHJv
bGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNlckFnZW50IH0pOwog
fQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKQogewotICAgIGVuc3Vy
ZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlVucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIg
eyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllciB9IH0pOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQgeyBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyIH0gfSk7CiB9CiAKIHZvaWQg
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgZW5zdXJlQ29ubmVj
dGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RGlkUmVzb2x2ZVJl
Z2lzdHJhdGlvblByb21pc2Uoa2V5KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSB7IGtleSB9KTsKIH0KIAog
Ym9vbCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJl
ZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikgY29uc3QKQEAgLTE3
NiwyNSArMTYyLDI0IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJh
dGlvbihTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvCiAgICAgcnVuT3JEZWxheVRh
c2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRvcE9yaWdp
biA9IFdURk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAgICAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAg
ICAgICBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzLmFkZChjYWxsYmFja0lELCBXVEZN
b3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxiYWNrSUQsIHRv
cE9yaWdpbiwgY2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6TWF0Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGll
bnRVUkwpKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJ1bk9y
RGVsYXlUYXNrRm9ySW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit2b2lkIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVuY3Rpb248dm9p
ZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fc3dPcmlnaW5UYWJsZS0+aXNJbXBvcnRlZCgpKSB7
CiAgICAgICAgIHRhc2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3Rhc2tzUGVu
ZGluZ09yaWdpbkltcG9ydC5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Ci0gICAgaW5pdGlhbGl6ZUNv
bm5lY3Rpb25JZk5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6d2hl
blJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBj
b25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJ
ZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3MuYWRkKGNhbGxi
YWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVhZHkoY2Fs
bGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFja0lELCB0b3BP
cmlnaW4sIGNsaWVudFVSTCkpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVn
aXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQpAQCAtMjE2LDI5ICsyMDEsMzIg
QEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMoU2VjdXJpdHlP
cmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24KICAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0gV1RGTW92ZSh0
b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAgIG1fb25nb2lu
Z0dldFJlZ2lzdHJhdGlvbnNUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykp
OwotICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50
VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6R2V0
UmVnaXN0cmF0aW9ucyB7IGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMIH0pOwogICAg
IH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChGZXRjaElk
ZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIgfSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsgc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVxdWVzdCwg
b3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCBy
ZWZlcnJlciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNhbmNlbEZldGNo
KEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogewotICAg
IGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNo
SWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNo
SWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbnRpbnVl
RGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNv
bm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewotICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7Cisg
ICAgY2xlYXIoKTsKK30KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNsZWFyKCkKK3sK
ICAgICBhdXRvIHJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdNYXRjaFJlZ2lz
dHJhdGlvblRhc2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uVGFz
a3MudmFsdWVzKCkpCiAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CkBAIC0yNDcsMzEg
KzIzNSwyNiBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvblRvU2VydmVy
TG9zdCgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGdldFJlZ2lzdHJhdGlvblRhc2tzLnZh
bHVlcygpKQogICAgICAgICBjYWxsYmFjayh7IH0pOwogCisgICAgYXV0byByZWdpc3RyYXRpb25S
ZWFkeVRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRhc2tzKTsKKyAg
ICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uUmVhZHlUYXNrcy52YWx1ZXMoKSkK
KyAgICAgICAgY2FsbGJhY2soeyB9KTsKKwogICAgIGNsZWFyUGVuZGluZ0pvYnMoKTsKIH0KIAog
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBpbml0aWFsaXplQ29ubmVjdGlvbklm
TmVlZGVkKCk7Ci0KLSAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChpZGVudGlmaWVyKSwgTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQ6OlJlcGx5
KCkpOwotfQotCi1XZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAotewotICAg
IGNvbnN0X2Nhc3Q8V2ViU1dDbGllbnRDb25uZWN0aW9uKj4odGhpcyktPmluaXRpYWxpemVDb25u
ZWN0aW9uSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXJGcm9t
Q2xpZW50IHsgaWRlbnRpZmllciB9LCBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpT
eW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudDo6UmVwbHkoKSk7CiB9CiAKIHZvaWQgV2ViU1dD
bGllbnRDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKIHsKICAgICBtX2lzVGhyb3R0
bGVhYmxlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXJlQWxsUGFnZXNUaHJvdHRsZWFibGUo
KTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgbV9pc1Rocm90dGxlYWJsZSB9KTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNldFRocm90dGxlU3RhdGUgeyBtX2lz
VGhyb3R0bGVhYmxlIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RvcmVS
ZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y2FsbGJhY2spCiB7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdG9yZVJl
Z2lzdHJhdGlvbnNPbkRpc2sgeyB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmgKaW5kZXggM2FmNDk1ZGNhOTQ0ZGVkYzkxZjU0M2NiZGQ2MTMxYjcwMzllYjkyMy4uZWZl
ZjM2YmNhY2QyODU0NTdiZTAxNGY4ZDRjYmM5ZGE2OTljMmY4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU1dDbGllbnRDb25u
ZWN0aW9uPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7IHNlc3Npb25JRCB9KTsgfQogICAgIH5XZWJT
V0NsaWVudENvbm5lY3Rpb24oKTsKIAotICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKyAgICBX
ZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAgICB2b2lk
IGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIpIGZpbmFsOwpAQCAtNzQsOCArNzQsNiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IFdlYlNXQ2xpZW50Q29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCk7CiAK
LSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLQogICAgIHZvaWQgc2No
ZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZp
bmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKICAgICB2b2lkIHBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKSBmaW5hbDsK
QEAgLTk3LDI3ICs5NSwyNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZVN0b3JhZ2VK
b2IoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKTsKIAotICAgIHZvaWQgcnVu
T3JEZWxheVRhc2tGb3JJbXBvcnQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzayk7CisgICAg
dm9pZCBydW5PckRlbGF5VGFza0ZvckltcG9ydChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzayk7CiAK
LSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAgdWludDY0X3QgbWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXIudG9V
SW50NjQoKTsgfQorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0KIAogICAgIHZv
aWQgc2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSYpOwogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZUlzSW1wb3J0ZWQoKTsKIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IHZvaWQgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoY29uc3QgVSYgbWVz
c2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9u
SUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgVW5p
cXVlUmVmPFdlYlNXT3JpZ2luVGFibGU+IG1fc3dPcmlnaW5UYWJsZTsKIAogICAgIHVpbnQ2NF90
IG1fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXIgeyAwIH07CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2s+IG1fb25nb2luZ01hdGNoUmVnaXN0cmF0aW9uVGFza3M7
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrPiBtX29uZ29p
bmdHZXRSZWdpc3RyYXRpb25zVGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2hlblJlZ2lz
dHJhdGlvblJlYWR5Q2FsbGJhY2s+IG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3M7Ci0g
ICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09yaWdpbkltcG9y
dDsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09yaWdpbkltcG9y
dDsKICAgICBib29sIG1faXNUaHJvdHRsZWFibGUgeyB0cnVlIH07CiB9OyAvLyBjbGFzcyBXZWJT
V1NlcnZlckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmlu
ZGV4IGM5MjU3YWI3NWNjYTAwZWYwOTI0MGZkZTc4YzUxMjg2ZDgwYzcxY2UuLmYyMmNhM2MxMzI1
NzMyODEwNDc4NTkwZTY0N2JiZjdlYzEyYWViYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpA
QCAtODYsOCArODcsOSBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+IFNlcnZpY2VXb3JrZXJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUgogICAgIHJldHVybiBXZWJE
b2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAotV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUdyb3VwSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCitXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lz
dHJhYmxlRG9tYWluLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSkKICAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RG
TW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbikpCiAgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQogICAgICwg
bV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkK
QEAgLTk4LDYgKzEwMCw3IEBAIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uCiAjZW5kaWYKIHsKICAg
ICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0b3JlKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fcmVnaXN0cmFibGVEb21haW4gfSwgMCk7
CiB9CiAKIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CkBAIC0yNTksOSArMjYyLDkgQEAgdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcgogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdv
cmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBXVEZNb3ZlKHJl
cGx5KSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVz
c2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
IHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmln
aW4pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlLCBzb3Vy
Y2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMTZjYzBkZWU3NTg4NDBjYzgyYzRjNDI4ZGI0
MzhjNDJiZjljM2NiZi4uYjVhMmM2OGFlMjAxZTVhYjcyM2M2MzAzMzMzMTk5ZjFlNTJiZTMwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01Myw3ICs1Myw3IEBAIHN0cnVj
dCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9u
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VH
cm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIH5XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTY1LDcgKzY1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOwogCiAgICAgLy8gV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29u
bmVjdGlvbi4KLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50
aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKICAgICB2b2lkIGRpZEZp
bmlzaEluc3RhbGwoT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1
bCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5k
aW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5hbDsK
QEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9v
bCBpc1Rocm90dGxlYWJsZSk7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVn
aXN0cmFibGVEb21haW47CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKICAgICBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNjRhZTEyMGY5Yjg5NjZhYzMwM2M1NWQ5NDc5MzQ5ODA3N2I2ZDhjMC4uMTcwMzBlOWUyOWJj
ZjNjMzBlZGY2ODk1ZDQ3MzVmMWVlNmViMmFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtMTgxOCwxMyArMTgxOCwxMyBAQCBMaWJXZWJSVENOZXR3b3JrJiBX
ZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQordm9p
ZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFn
ZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vz
c2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAgICAgLy8gV2UgYXJlIGluIHRoZSBTZXJ2aWNl
IFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91
ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKICAgICAvLyBieSBjYWxsaW5nIGVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1
c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAgLy8gTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCiAgICAg
YXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0
aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rp
b24sIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSkpOworICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSkp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZWMwZmJlMjJiOWUzM2ZhOTA5
NWZlNGE1YjI2M2RiMDEyY2UwODI0OS4uYmU3MTMwMTU4ODQwNzhiMzg0NWRhMmJjMTljMjkwNTRl
MzcyNGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNjUsNyAr
MzY1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lvbklE
KTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkY2VlMWY0NzRjNWE2Y2Y2MTlhMWI4
NmQyODU0MDBiMDVkZGUzODUzLi5mNDQ5ZjVmNDk3NjI5MmNkZjA2YjU4MWU4MWMyYjQ3YjQxOTEy
MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VH
cm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKKyAgICBFc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFn
ZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIFBBTDo6
U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiAgICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50cygpCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378201</attachid>
            <date>2019-09-06 09:41:35 -0700</date>
            <delta_ts>2019-09-09 02:50:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190906184133.patch</filename>
            <type>text/plain</type>
            <size>86150</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU0YTRlN2RmOWQyYTU0
ZDRiZGFkMjY0MTdlN2FjNzc3N2ZlZTk1My4uODZiNWI5YjU4NmIwMzExOTE5NWE1N2RlMDBhZGRl
MzdkMjNjZmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTA5LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gb2JzZXJ2
YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lvbklEIHRvIGVhc2UgTmV0d29y
a1Byb2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2VzcyBjb25uZWN0aW9uLgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIExldCBjb25uZWN0aW9uIGlkZW50
aWZpZXIgYmUgc2V0IGluIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgZ2VuZXJhdGVkLgorCiAyMDE5
LTA5LTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1N0cmVhbWVyXSBZVVYgYnVmZmVycyBvbiBpTVggcGxhdGZvcm1zIGhhdmUgdG8gYmUgdHJlYXRl
ZCBhcyBSR0JBCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjYjlmMzdkNzA5YTI3NmQxNzY1NDM0Yzkx
MmE3YTlkZWJlYWI5MTc0Li5kOGI5ZTU3MzY1YWQ5YThhOWE2ZDQ0OWMwMGQxYzM0OWUxYzdlNzE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOS0wNiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdlYlByb2Nlc3MgcHJv
Y2Vzc0lkZW50aWZpZXIgdG8gaWRlbnRpZnkgU2VydmljZSBXb3JrZXIgY29ubmVjdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTQ1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL1Nlc3Np
b25JRC5oOgorICAgICAgICAoUEFMOjpTZXNzaW9uSUQ6OlNlc3Npb25JRCk6CisKIDIwMTktMDgt
MzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZW1vdmUgSEFWRV9DRk5FVFdPUktfV0lUSF9BVVRPX0FEREVEX0hUVFBfSEVBREVSX1NVUFBS
RVNTSU9OX1NVUFBPUlQgY29uZGl0aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDc5NTljYTg4NDVjOGU0NDU3
MTE2YzE4ZDRlYTBkYTAzMzVjNzJlYS4uYmFkYTFjZjhlNDRkMWFhZmY5ODI3ZTJkNmE2MTMxNDUz
ODRiM2YwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTEgQEAKKzIwMTktMDktMDYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXZWJQcm9jZXNzIHByb2Nl
c3NJZGVudGlmaWVyIHRvIGlkZW50aWZ5IFNlcnZpY2UgV29ya2VyIGNvbm5lY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE0NTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbiBiZSBzdG9yZWQgaW4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
CisgICAgICAgIFRoZXkgYXJlIG5vdyBrZXllZCBieSBzZXNzaW9uIElEcyBoZW5jZSB3aHkgV2Vi
U1dDbGllbnRDb25uZWN0aW9uIGlzIHVzaW5nIHRoZSBzZXNzaW9uIElEIGFzIG1lc3NhZ2UgY29u
bmVjdGlvbiBJRC4KKyAgICAgICAgQ3JlYXRpb24gbm8gbG9uZ2VyIHJlcXVpcmVzIGEgc3luYyBJ
UEMgc2luY2UgdGhlIGNvbm5lY3Rpb24gaXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSBpdHMgc2Vz
c2lvbiBJRCBhbmQgaXRzIHByb2Nlc3MgSUQuCisgICAgICAgIFRoZXNlIElEcyBhcmUgc3RhYmxl
IG92ZXIgbmV0d29yayBwcm9jZXNzIGNyYXNoLgorICAgICAgICBXaXRoaW4gTmV0d29ya1Byb2Nl
c3MsIGEgc2VydmVyIGNvbm5lY3Rpb24gaXMgbWFuYWdlZCBieSBhIFNXU2VydmVyIHdoaWNoIGlz
IHNlc3Npb24gSUQgc3BlY2lmaWMuCisgICAgICAgIEluIHRoYXQgY2FzZSwgdGhlIHByb2Nlc3Mg
aWRlbnRpZmllciB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBjb25uZWN0aW9uLgorCisgICAgICAg
IE1vdmUgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIGJlIG93bmVkIGJ5IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICBJbnN0ZWFkIG9mIGNyZWF0aW5nIGl0IHdo
ZW4gd2VicHJvY2VzcyBpcyBjb25uZWN0aW5nIHRvIG5ldHdvcmsgcHJvY2VzcywgdXNlIGEgZGVk
aWNhdGVkIElQQyBtZXNzYWdlLgorICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uIG9uY2UgV2ViUHJvY2VzcyBhc2tzIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAg
VGhpcyB3aWxsIGFsbG93IGV4aXN0aW5nIFdlYlByb2Nlc3MsIGluIGNhY2hlIG9yIHJ1bm5pbmcg
cGFnZXMsIHRvIHJ1biBzZXJ2aWNlIHdvcmtlcnMgYXMgd2VsbC4KKyAgICAgICAgQSBjb250ZXh0
IGNvbm5lY3Rpb24gbWFwIGlzIGtlcHQgaW4gTmV0d29yayBQcm9jZXNzIHRvIHJldXNlIGNvbnRl
eHQgY29ubmVjdGlvbnMgc2luY2UgdGhlc2UgY29ubmVjdGlvbnMgYXJlIG5vdCBzZXNzaW9uSUQg
c3BlY2lmaWMuCisKKyAgICAgICAgTWlncmF0ZSBmcm9tIGEgc2luZ2xlIGJvb2xlYW4gdG8gYSBI
YXNoU2V0IHRvIHRyYWNrIHdoZXRoZXIgc29tZSBjb25uZWN0aW9ucyBhcmUgaW4gdGhlIHByb2Nl
c3Mgb2YgYmVpbmcgY3JlYXRlZC4KKyAgICAgICAgUHJldmlvdXNseSBpZiB0d28gcmVxdWVzdHMg
dG8gY3JlYXRlIGNvbm5lY3Rpb25zIHdlcmUgZG9uZSBzaG9ydGx5IG9uZSBhZnRlciB0aGUgb3Ro
ZXIgb24gZGlmZmVyZW50IHJlZ2lzdHJhYmxlCisgICAgICAgIGRvbWFpbnMsIHRoZSBzZWNvbmQg
cmVxdWVzdCB3b3VsZCBub3QgYmUgcHJvY2Vzc2VkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZvckVhY2hT
V1NlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZWVkc1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dT
ZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnVucmVn
aXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnVucmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0
aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6b3Blbk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpzdGFydCk6CisgICAgICAgICog
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vz
c2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmV4aXN0
aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpz
Y2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDbGllbnRDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNo
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Ub1NlcnZlckxvc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzeW5j
VGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9u
Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV91c2VyQWdlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
CiAyMDE5LTA5LTA2ICBQYXRyaWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gRG8gbm90IGVuYWJsZSB0aGUgc2FuZGJveCBpbiBTbmFwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Npb25JRC5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9TZXNzaW9uSUQuaAppbmRleCBjNzFkNmEyYmFlY2NjMDMzNDk3NmVlYjFkMzEx
NzJjNzBkZWQ0Y2NiLi5lMTQ0M2YwYjgwNTFlM2MzMDEzYzI5ZmY4ODM5ZTUwOGZjMjZjY2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Npb25JRC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmgKQEAgLTU1LDYgKzU1LDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCisgICAgZXhwbGljaXQgU2Vzc2lvbklEKHVpbnQ2NF90IGlkZW50aWZp
ZXIpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKwog
ICAgIFBBTF9FWFBPUlQgc3RhdGljIFNlc3Npb25JRCBnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25J
RCgpOwogICAgIFBBTF9FWFBPUlQgc3RhdGljIFNlc3Npb25JRCBnZW5lcmF0ZVBlcnNpc3RlbnRT
ZXNzaW9uSUQoKTsKICAgICBQQUxfRVhQT1JUIHN0YXRpYyB2b2lkIGVuYWJsZUdlbmVyYXRpb25Q
cm90ZWN0aW9uKCk7CkBAIC03NiwxMSArODEsNiBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IFNlc3Npb25JRCh1aW50NjRfdCBpZGVudGlmaWVyKQotICAgICAgICA6IG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgIHsKLSAgICB9Ci0KICAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkU2Vzc2lvbklEVmFsdWUodWludDY0X3Qgc2Vzc2lvbklEKSB7IHJldHVybiBzZXNzaW9u
SUQgIT0gSGFzaFRhYmxlRW1wdHlWYWx1ZUlEICYmIHNlc3Npb25JRCAhPSBIYXNoVGFibGVEZWxl
dGVkVmFsdWVJRDsgfQogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmlu
ZGV4IDczOTFjNGMyMWEzNmQ1MGQ3N2YyMDZkN2IzZWViZDA1YjA2NDA0ZTAuLjc2MGM0Y2QwYTNj
NmVlZDc1ZThhODY4NjYyZTk1YzQ5MDU5MDE2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKQEAgLTk5LDkgKzk5
LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGUKIAogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzIG1lc3NhZ2UgPSB7IG1lc3NhZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwb3J0c09y
RXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CiAgICAgYXV0byBzb3VyY2VJZGVudGlm
aWVyID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQo
KS5pZGVudGlmaWVyKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbbWVzc2FnZSA9IFdURk1vdmUo
bWVzc2FnZSksIGRlc3RpbmF0aW9uSWRlbnRpZmllciA9IGlkZW50aWZpZXIoKSwgc291cmNlSWRl
bnRpZmllciwgc291cmNlT3JpZ2luID0gY29udGV4dC5vcmlnaW4oKS5pc29sYXRlZENvcHkoKV0g
KCkgbXV0YWJsZSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0gY29udGV4dC5z
ZXNzaW9uSUQoKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSWRlbnRp
ZmllciA9IGlkZW50aWZpZXIoKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gY29u
dGV4dC5vcmlnaW4oKS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChh
dXRvKiBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpKQotICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVu
dGlmaWVyLCBzb3VyY2VPcmlnaW4pOworICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc2Vzc2lvbklELCBkZXN0aW5hdGlvbklkZW50aWZpZXIs
IG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiAgICAgfSk7CiAKICAg
ICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGZlMGMwODQ5MmMzNTIxN2EyMzZl
MjMyYzA2YmM1YWI2MzY3ODg2YTEuLmZmZmI3MTFkZTBiMmZkZmI3ZGFhOTFkOTYwZTQ0YTNhOWY5
MTAzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlV29y
a2VyU3RhcnRlZChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJGYWlsZWRUb1N0YXJ0KE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaEluc3Rh
bGwoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA5MzI2YTNiYWM2
NTlhMjQ2NzA1ZTkyMGE4ODg0NmRmNGQwZTk2OWIwLi45Y2Q4ZGUwZDA3MzU3M2Q1ZTg1M2MzNzk5
NGJhYzUzNTVlOTkyMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNTAsOSArNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBTZWNvbmRzIHRlcm1pbmF0aW9uRGVsYXkgeyAxMF9zIH07CiAKLVNXU2Vy
dmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKFNXU2VydmVyJiBzZXJ2ZXIpCitTV1NlcnZlcjo6
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyLCBJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgOiBtX3NlcnZlcihzZXJ2ZXIpCi0gICAgLCBtX2lkZW50aWZpZXIoU1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmgKaW5kZXggMGM1N2EzNTdlZmUzZWNiNGY0MTk3Y2M5MWYwODcwMjIw
YjY2NzAwZC4uYjM5NGViZjNhNjVhYjEwOTBiZmFkODJlMWVkNDhkNjBlNGI5MmYwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAt
NTYsNiArNTYsNyBAQCBjbGFzcyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiBlbnVtIGNs
YXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNz
IFNlcnZpY2VXb3JrZXJTdGF0ZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKK3N0
cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50
UXVlcnlPcHRpb25zOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CkBAIC04Niw2ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNldFJlZ2lzdHJhdGlvblVwZGF0ZVZpYUNhY2hlKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFuZ2Uo
Y29uc3QgSGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+JiBjb250ZXh0SWRlbnRpZmllcnMsIGNv
bnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBuZXdDb250cm9sbGVyKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCByZWdpc3RyYXRpb25SZWFkeVJlcXVl
c3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVu
dElkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYpID0gMDsKIApAQCAtOTMsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNvbnN0IFNXU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlcjsgfQog
CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb25uZWN0
aW9uKFNXU2VydmVyJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24oU1dTZXJ2
ZXImLCBJZGVudGlmaWVyKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmlzaEZl
dGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklu
U2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggYWMzYTIxYTFkNDc4ZTY1YjI0MWY2NTM4MzNiNTliOWZmNDUz
ZDQxMS4uZjE2MzlmOGQ4YzAxNjg1Yjk0MTEyZGRmYjYxMGNiNjExMmY4NjhhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTIxNCwyMSArMjE0LDIyIEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc3dDb25uZWN0
aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAg
ICAgaWYgKGF1dG8gc3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNlc3Np
b25JRCB7IGRlY29kZXIuZGVzdGluYXRpb25JRCgpIH0pKQogICAgICAgICAgICAgc3dDb25uZWN0
aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3Jr
UHJvY2Vzcy0+Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25u
ZWN0aW9uKSkgewotICAgICAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25u
ZWN0aW9uKTsKKyAgICAgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICAg
ICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRleHRQ
cm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKLSAgICAgICAgICAgIGNvbnRl
eHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgQVNTRVJUKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIGlm
IChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVj
dGlvbi0+ZGlkUmVjZWl2ZUZldGNoVGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjksNyArMjcwLDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRv
IHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSkpCisgICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQo
UEFMOjpTZXNzaW9uSUQgeyBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSB9KSkKICAgICAgICAgICAg
IHN3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI4NiwxMCArMjg3LDE5IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIGlmIChSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uPiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVj
dGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewotICAg
ICAgICAvLyBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGV4aXRlZC4KLSAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlm
IChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgYXV0byYgcmVnaXN0cmFibGVEb21h
aW4gPSBtX3N3Q29udGV4dENvbm5lY3Rpb24tPnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAgICAg
ICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7CisKKyAgICAgICAg
T3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRDsKKyAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+Zm9yRWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2ZXIpIHsKKyAgICAgICAgICAgIHNl
cnZlci5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lz
dHJhYmxlRG9tYWluKTsKKyAgICAgICAgICAgIGlmIChzZXJ2ZXIubmVlZHNTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAg
ICAgICAgICAgICAgIHNlc3Npb25JRCA9IHNlcnZlci5zZXNzaW9uSUQoKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGlmIChzZXNzaW9uSUQpCisgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5j
cmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCAqc2Vzc2lv
bklEKTsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKQEAgLTg3
OCwxOCArODg4LDIzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVn
aXN0ZXJTV0Nvbm5lY3Rpb25zKCkKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7CiAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+
c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0byBjb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwg
bV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOwotICAgIAotICAgIFNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5p
ZGVudGlmaWVyKCk7Ci0gICAgTE9HKFNlcnZpY2VXb3JrZXIsICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIC0gJXMiLCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgYXV0
byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29y
a1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyLCBzZXNzaW9uSUQpOwogCi0gICAgQVNTRVJUKCFtX3N3Q29ubmVjdGlvbnMuY29udGFpbnMo
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKLSAgICBtX3N3Q29ubmVjdGlvbnMuYWRkKHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtYWtlV2Vha1B0cigqY29ubmVjdGlvbikpOworICAg
IEFTU0VSVCghbV9zd0Nvbm5lY3Rpb25zLmNvbnRhaW5zKHNlc3Npb25JRCkpOworICAgIG1fc3dD
b25uZWN0aW9ucy5hZGQoc2Vzc2lvbklELCBtYWtlV2Vha1B0cigqY29ubmVjdGlvbikpOwogICAg
IHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOwotICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKK30KKwordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVj
dGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIG1fc3dD
b250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRl
KG1fbmV0d29ya1Byb2Nlc3MsIHJlZ2lzdHJhYmxlRG9tYWluLCBtX2Nvbm5lY3Rpb24uZ2V0KCkp
OworCisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Zm9yRWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2
ZXIpIHsKKyAgICAgICAgc2VydmVyLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCpt
X3N3Q29udGV4dENvbm5lY3Rpb24pOworICAgIH0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAppbmRleCA0MmMxN2UxYjA1YjQwNmIzOTRjOTU0YWI3OWMyYTM4NjQ5OTI0MTM0
Li43ZDJlOTQyZTE0ZjU1MjA5NzVlYjIzY2M5ZmRhNmRiNzYzNzdkODI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC02OCw2ICs2OCw3IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVs
OwogY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudDsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjsKIHR5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmll
cjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC0yMDgsNyArMjA5LDggQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJs
aXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYpOworICAgIHZv
aWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lk
IGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9ucygpOwogI2VuZGlmCiAKQEAgLTMx
OSw3ICszMjEsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBX
ZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAgICBIYXNo
TWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dD
b25uZWN0aW9uczsKKyAgICBSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiBt
X3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVN
T1RFX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
ZmQwOTJmMzE0NzkzMjU0YzRmYjU0Nzk4ZmI3ZTcwNjA3ZTM2YjY3MS4uNzc3YWRmYjdjYjQ5ZDdl
NmFjYjEyNjc1ZjRjMWFjZjI5NWM5ZjRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC04MSw3ICs4MSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIEVzdGFibGlz
aFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgRXN0YWJs
aXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4p
CiAjZW5kaWYKIAogICAgIENyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyIHBvcnQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCAxNDM3ZDFhZTFjZDNlZmUwOTFiZDRkNTA4MzRlMjQwMjMy
YjUxMjkxLi4xODcyNmY2ZTNkYmNiZjA0ZWQzODIyZDBiOGYzN2JjOGU0YzE0MjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjE1
LDE3ICsyMTUsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlcgogICAgIH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hhc1Nl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBp
ZiAoYXV0byogd2ViU1dDb25uZWN0aW9uID0gY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9t
SVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewotICAgICAgICAgICAgd2ViU1dDb25uZWN0aW9u
LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJv
Y2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTQxNCw3ICs0MDMsNyBA
QCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIsIElQQzo6QXR0YWNobWVudD4+CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZpZXIg
aWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNz
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQ
Qzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpcGND
b25uZWN0aW9uID0gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwogICAgIGlmICgh
aXBjQ29ubmVjdGlvbikgewpAQCAtNDMxLDI0ICs0MjAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBp
ZGVudAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaXBjQ29ubmVjdGlvbi0+c2Vjb25k
KSk7CiAKICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVy
OjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7Ci0gICAgCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7Ci0gICAgICAgIEFTU0VSVChwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpOwotICAgICAgICBBU1NFUlQo
bV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICBh
dXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpj
cmVhdGUoKnRoaXMsIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25uZWN0aW9uLmNvbm5lY3Rpb24oKSk7
Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5h
ZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIGNvbnRleHRDb25uZWN0aW9uLmNvcHlSZWYo
KSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Ci0KLSAgICAgICAgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rp
b24gPSBmYWxzZTsKLQotICAgICAgICBmb3IgKGF1dG8qIHNlcnZlciA6IFNXU2VydmVyOjphbGxT
ZXJ2ZXJzKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25D
cmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKTsKLSAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFibGVE
b21haW4pOwotI2VuZGlmCiAKICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGRDb25uZWN0aW9u
KGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKIH0KQEAgLTIzOTAsMzYgKzIzNjEsMTAgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Z2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGUKICNlbmRpZiAvLyBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05T
KQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBD
Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgZm9yIChhdXRv
JiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
cy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBj
Q29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uZ2V0KCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQot
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3Nl
ZChSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24pCi17Ci0gICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLT5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgIAotICAgIHNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAgZm9yIChh
dXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZlci0+
bWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJs
ZURvbWFpbik7Ci0gICAgCi0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkgewotICAgICAgICBSRUxFQVNF
X0xPRyhTZXJ2aWNlV29ya2VyLCAiQ29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNz
IHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKLSAgICAg
ICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgV1RG
OjpudWxsb3B0KTsKLSAgICB9Ci19Ci0KLWJvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmZv
ckVhY2hTV1NlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFNXU2VydmVyJik+JiBjYWxsYmFjaykK
IHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8m
IHN3U2VydmVyKSB7Ci0gICAgICAgIHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwotICAg
IH0pOworICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCisgICAg
ICAgIGNhbGxiYWNrKCpzZXJ2ZXIpOwogfQogCiBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3
U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0yNDQ3LDQwICsy
MzkyLDM2IEBAIFdlYlNXT3JpZ2luU3RvcmUqIE5ldHdvcmtQcm9jZXNzOjpleGlzdGluZ1NXT3Jp
Z2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklECiAgICAgcmV0dXJuICZzdGF0aWNfY2Fz
dDxXZWJTV09yaWdpblN0b3JlJj4oc3dTZXJ2ZXItPm9yaWdpblN0b3JlKCkpOwogfQogCitib29s
IE5ldHdvcmtQcm9jZXNzOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdURjo6YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsmXShh
dXRvJiBzd1NlcnZlcikgeworICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsK
KyAgICB9KTsKK30KKwogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3JrUHJv
Y2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKICAgICByZXR1cm4gbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgT3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKG1fd2FpdGluZ0ZvclNlcnZl
clRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKQorICAgIGlmIChtX3BlbmRpbmdDb25uZWN0aW9u
RG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRy
dWU7Ci0gICAgaWYgKHNlc3Npb25JRCkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKHJlZ2lzdHJh
YmxlRG9tYWluLCAqc2Vzc2lvbklEKSwgMCk7Ci0gICAgZWxzZQotICAgICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MocmVnaXN0cmFibGVE
b21haW4pLCAwKTsKLX0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbikKLXsKLSAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rp
b25zLmdldChkZXN0aW5hdGlvbklkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIp
KQotICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChk
ZXN0aW5hdGlvbklkZW50aWZpZXIuY29udGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSks
IHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CisgICAgbV9wZW5kaW5nQ29ubmVjdGlv
bkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFpbiwg
c2Vzc2lvbklEIH0sIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlv
biwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UsIFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
CiB7Ci0gICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQo
Y29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlcihkZXN0aW5hdGlvbiwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlKTsKKyAg
ICBpZiAoYXV0byogY29ubmVjdGlvbiA9IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNv
bm5lY3Rpb24oZGVzdGluYXRpb25JZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KSkKKyAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
ZGVzdGluYXRpb25JZGVudGlmaWVyLmNvbnRleHRJZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2Up
LCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSk7Ci0gICAgQVNTRVJUKCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFpbnMo
Y29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLSAgICBtX3N3U2VydmVyQ29ubmVjdGlvbnMuYWRk
KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cihjb25uZWN0aW9uKSk7CiAgICAg
YXV0byogc3RvcmUgPSBleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5lY3Rpb24u
c2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVChzdG9yZSk7CiAgICAgaWYgKHN0b3JlKQpAQCAtMjQ4
OSwyNiArMjQzMCwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29u
bmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3RpbwogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlv
biYgY29ubmVjdGlvbikKIHsKLSAgICBBU1NFUlQobV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChj
b25uZWN0aW9uLmlkZW50aWZpZXIoKSkuZ2V0KCkgPT0gJmNvbm5lY3Rpb24pOwotICAgIG1fc3dT
ZXJ2ZXJDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwogICAgIGlm
IChhdXRvKiBzdG9yZSA9IGV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlv
bi5zZXNzaW9uSUQoKSkpCiAgICAgICAgIHN0b3JlLT51bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0
aW9uKGNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzd0NvbnRleHRDb25u
ZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3Rl
clNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQogewotICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2Vy
dmljZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIp
OwotICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7Ci0gICAgCi0gICAg
Zm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1Nl
cnZlci0+bWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdp
c3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jb25u
ZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUo
cmVnaXN0cmFibGVEb21haW4pOworICAgIEFTU0VSVCghbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9ucy5jb250YWlucyhjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKyAgICBtX3Bl
bmRpbmdDb25uZWN0aW9uRG9tYWlucy5yZW1vdmUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFp
bigpKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uLnJl
Z2lzdHJhYmxlRG9tYWluKCksICZjb25uZWN0aW9uKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vz
czo6dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX3NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25zLmdldChjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpID09ICZjb25uZWN0aW9u
KTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLnJl
Z2lzdHJhYmxlRG9tYWluKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaXNhYmxlU2Vy
dmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAwOTBkNDdmMDFhZDJkY2VkNDk5YWJl
ODk3ZjcwYjlhNGNlOTA3YzNhLi45ZDg4NmZkODQyYmFlMGZhYTliZDg4ZjM1NTI3MDZlZmQ4ZmY2
ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC0zMDAsMTYgKzMwMCwxNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mKTsKLSAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwor
ICAgIHZvaWQgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICAKICAgICBXZWJDb3JlOjpT
V1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJl
Z2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIHZv
aWQgdW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsK
ICAgICAKLSAgICB2b2lkIHN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwotICAgIAotICAgIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NvbnRleHRQcm9j
ZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYpOworICAg
IHZvaWQgcmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYpOworICAgIHZvaWQgdW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAgICBib29sIG5lZWRzU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJikgY29uc3Q7CisgICAgdm9pZCBmb3JFYWNoU1dTZXJ2ZXIoY29uc3QgRnVuY3Rp
b248dm9pZChXZWJDb3JlOjpTV1NlcnZlciYpPiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQpAQCAtMzk1LDcgKzM5Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBI
YW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtl
clByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsK
IAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtNDY0LDEzICs0NjUsMTIgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0UHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAgICAgCi0gICAgdm9pZCBw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3Jl
OjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZp
ZXImIHNvdXJjZSwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAg
CiAgICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7
CiAgICAgCiAgICAgV2ViU1dPcmlnaW5TdG9yZSogZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vz
c2lvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7Ci0gICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCwgU3RyaW5nJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBj
b25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgpAQCAtNTQwLDEyICs1NDAs
MTEgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fc3RvcmFnZVRhc2tNdXRleDsKICAgICAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiwgUmVmUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbnM7Ci0gICAgYm9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uczsKICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Np
b25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsKLSAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOworICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5z
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJmMjFh
MmRjN2JhZGFmNjIwMzk1Y2QwNWM2MWVkMjQxMjI5MzJmOWQuLmFiM2JhYmI0ODRlODdmYjMzMzcz
ZDlhODk2YzI1MTJkMTk2NTFkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25u
ZWN0aW9uIGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJv
Y2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pIC0+IChPcHRpb25hbDxJUEM6OkF0dGFj
aG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVu
dGlmaWVyKSAtPiAoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRpZmll
cikgQXN5bmMKIAogI2lmIFVTRShTT1VQKQogICAgIFNldElnbm9yZVRMU0Vycm9ycyhib29sIGln
bm9yZVRMU0Vycm9ycykKQEAgLTE1MywxMCArMTUzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldENhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUpOwogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcgc291
cmNlT3JpZ2luKQotCi0gICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJ
ZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllcikKLQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6
Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlz
YWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpCiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2YmNiOTlhMTAwZjg2YjY5
OWM3NzE1ZDViNWY0NGY4ZWFmNjg1ZmJhLi45M2JmNTE5ODc2NzYxZjA3MzAxZjRiMGJmMjI0ZTc2
N2FlNGE4ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAt
NjEsOCArNjEsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgU1dTRVJWRVJD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAi
JXAgLSBXZWJTV1NlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQog
I2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChm
bXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKLVdlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgU1dTZXJ2
ZXImIHNlcnZlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXNzaW9uSUQgc2Vzc2lv
bklEKQotICAgIDogU1dTZXJ2ZXI6OkNvbm5lY3Rpb24oc2VydmVyKQorV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBTV1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAg
IDogU1dTZXJ2ZXI6OkNvbm5lY3Rpb24oc2VydmVyLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4ocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQo
KSkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2NvbnRlbnRDb25uZWN0
aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpA
QCAtMjUzLDEzICsyNTMsMTMgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNjaGVkdWxl
Sm9iSW5TZXJ2ZXIoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIHNlcnZlcigp
LnNjaGVkdWxlSm9iKFdURk1vdmUoam9iRGF0YSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0
aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNz
YWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikKIHsKICAgICBhdXRvKiBzb3VyY2VTZXJ2aWNlV29ya2VyID0gc2Vy
dmVyKCkud29ya2VyQnlJRChzb3VyY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIXNvdXJjZVNlcnZp
Y2VXb3JrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5h
dGlvbkNvbnRleHRJZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VTZXJ2aWNlV29y
a2VyLT5kYXRhKCksIHNvdXJjZU9yaWdpbiB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0Ns
aWVudENvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50IHsgZGVzdGlu
YXRpb25Db250ZXh0SWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlU2VydmljZVdvcmtlci0+ZGF0
YSgpLCBzb3VyY2VPcmlnaW4gfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpt
YXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGll
bnRVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggOTAwMjNkNjYx
ODRmZDJkMTg3MWQ0NDg5NjE3YTBmOWY2NzJhMDI4Yi4uYWRlOGU3ZTNhNjMwYzYxNTBiOTFhYTlh
YjIwMzA2NjU1NjljNzc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtNTMsNyArNTQsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsK
IAogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVy
OjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihOZXR3b3Jr
UHJvY2VzcyYsIFdlYkNvcmU6OlNXU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNz
aW9uSUQpOworICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNv
cmU6OlNXU2VydmVyJiwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklEKTsKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24oY29uc3QgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uJikgPSBkZWxldGU7CiAgICAgfldlYlNXU2VydmVyQ29ubmVjdGlv
bigpIGZpbmFsOwogCkBAIC02NCw5ICs2NSw2IEBAIHB1YmxpYzoKIAogICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKLSAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRp
ZmllciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwotICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNv
bnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7Ci0K
IHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdl
cyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSYpIGZpbmFsOwpAQCAtOTQsNiArOTIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXImKTsKICAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikgZmluYWw7CisKICAgICB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpIGZpbmFs
OwogCiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRs
ZWFibGU7IH0KQEAgLTEwMiw4ICsxMDIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFRocm90
dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0
YXRlKCk7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlm
aWVyJiBzb3VyY2UpOworCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7IH0K
LSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpOyB9CisgICAgdWludDY0X3QgbWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRC50b1VJ
bnQ2NCgpOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgc2Vu
ZFRvQ29udGV4dFByb2Nlc3MoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwg
VSYmIG1lc3NhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCmluZGV4IGJmZTQwM2RmNWViYTI4OTQ2OTc1N2MzMDQ4MTgxNGRlNmI1
YTczMzAuLjdiMWU5MjA3MTA5Y2QxNDUwNzZiOWFhNzIwMDk5NTExOWYzOGJlZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0y
OSwxMSArMjksMTMgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJG
b3JtRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNDQsOSArNDYsMTMgQEAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG4KICAgICAsIG1faXBjQ29u
bmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3
b3JrUHJvY2VzcykKIHsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5yZWdpc3RlclNXQ29udGV4dENv
bm5lY3Rpb24oKnRoaXMpOwogfQogCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CitXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQorewor
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnVucmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKCp0aGlz
KTsKK30KIAogSVBDOjpDb25uZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKQEAgLTY1LDYgKzcxLDEyIEBAIHZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkKCkKICAg
ICAgICAgZmV0Y2gtPmZhaWwoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2VyIGNvbnRleHQgY2xvc2VkIl9zIH0pOwogfQogCit2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgaWYgKGF1dG8qIGNv
bm5lY3Rpb24gPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklE
KS5jb25uZWN0aW9uKGRlc3RpbmF0aW9uSWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5jb250ZXh0SWRlbnRpZmllciwgbWVzc2FnZSwgc291
cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKK30KKwogdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246Okluc3RhbGxTZXJ2aWNlV29ya2VyIHsgZGF0YSwgc2Vzc2lvbklELCB1
c2VyQWdlbnQgfSk7CkBAIC0xMTcsNyArMTI5LDE3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQog
CiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbk1heU5vTG9u
Z2VyQmVOZWVkZWQoKQogewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPnN3Q29udGV4dENvbm5lY3Rp
b25NYXlOb0xvbmdlckJlTmVlZGVkKCp0aGlzKTsKKyAgICBpZiAobV9uZXR3b3JrUHJvY2Vzcy0+
bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4oKSkpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIG5vIGxvbmdlciBuZWVkZWQsIHRl
cm1pbmF0aW5nIGl0Iik7CisgICAgdGVybWluYXRlKCk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNz
LT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikgeworICAgICAgICBzZXJ2ZXIubWFy
a0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3RyYWJsZURv
bWFpbigpKTsKKyAgICB9KTsKKworICAgIGNvbm5lY3Rpb25DbG9zZWQoKTsKIH0KIAogdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Ro
cm90dGxlYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAppbmRleCA5MGEwN2VhMjRiYmFkMzM3NTY3YTRiZWEzNzIyNWYzODIyMTFhYTViLi4y
MGVjMTVlNmJmOTlmOGVkNjkyZDBiYzJiOWQyZGE1ZDBlN2Y4YzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBGZXRjaE9wdGlvbnM7CitzdHJ1Y3QgTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CiAKQEAgLTgy
LDYgKzgzLDggQEAgcHJpdmF0ZToKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworCiAgICAgLy8g
TWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgV2ViUHJvY2VzcwogICAgIHZvaWQgaW5zdGFsbFNlcnZp
Y2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYs
IFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CiAgICAgdm9p
ZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDk5NDllM2Q0MzVmMjQ3YjUwYmZkNDQ0ZDUwNmRlMmE5
NTI3ZGM1MmQuLmUzMTU4ZmM5MGIzNTc0ZTRiODYwYmQyNDFjMjdhMWIwNDI2ZWI4M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbgpAQCAtMzYsNiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24gewogICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVz
dElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbSh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgU3RyaW5nIHNjcmlwdCwgVVJMIHJlc3BvbnNl
VVJMLCBTdHJpbmcgbWltZVR5cGUpOworICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNDQ5MDFhOGMzODdiNzgwMDUwOTg3ZjlkYjE2
NWY2NDQwZjJiMTQwYi4uNTFiM2U5MDgwNjZlNWY4YzQxZWQ4MDFmNjFhZTliMTAxN2RmNDg1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0xNDIsMTYgKzE0Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJv
Y2VzCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6b3Blbk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbih1aW50NjRfdCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nlc3NQcm94
eSYgd2ViUHJvY2Vzc1Byb3h5KQogewotICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9
IGZhbHNlOwotICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOwotI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94
eT4od2ViUHJvY2Vzc1Byb3h5KSkgewotICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0g
dHJ1ZTsKLSAgICAgICAgcmVnaXN0cmFibGVEb21haW4gPSBkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5Pih3ZWJQcm9jZXNzUHJveHkpLnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAg
fQotI2VuZGlmCi0KLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsg
d2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCBpc1NlcnZpY2VXb3JrZXJQ
cm9jZXNzLCByZWdpc3RyYWJsZURvbWFpbiB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgd2ViUHJvY2Vzc1Byb3h5ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwg
Y29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIp
IG11dGFibGUgeworICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3
ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkgfSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlBy
b2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rp
b25JZGVudGlmaWVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTIwOSwxMiArMTIwMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Z2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCi17Ci0gICAgbV9wcm9j
ZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
KnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBXVEY6Om51bGxvcHQpOwotfQotCi12
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJl
Z2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7CiAgICAgbV9wcm9jZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCBzZXNzaW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4MGRmZTYwYTI0ODQ0M2RkOTVkMWJl
OTBhOWYxNDFiYzFiYmMxYmM5Li44OGRhN2MwNGY2NjJjODdhYjgzMzQ5MmRiODg5MDk2NzdjNDYz
OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtMjM4LDggKzIzOCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
KTsKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6
OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9u
SUQpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRf
dCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBlNGFmZTRiNWI3MWFmNmI3ZDM0NWY1NmIwY2YxYzEzYWRkZjYzZTVhLi5h
NmRiYjdjNWM5MzYzM2MyMTQ0ZmVkOWRmOTY2OWYzYmY1M2FmNjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCkBAIC02MSw4ICs2MSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKQotICAgIEVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzc0ZvckV4cGxpY2l0
U2Vzc2lvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFM
OjpTZXNzaW9uSUQgZXhwbGljaXRTZXNzaW9uKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogI2VuZGlmCiAKICAgICBS
ZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50
U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCkgLT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdR
dW90YSkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggOGIzYTQyY2QwNzFmNTQxZjMwNGUyNWE0YTNiMGNi
ZDUwNDUwNWU5MS4uYTRiYTkyYTkwOGY2ZGI0MGRlN2U5OWNkMzkxZjVhYzY2ZGQxZmVkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5jcHAKQEAgLTc2LDkgKzc2LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYKICAgICBs
YXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgicmVnaXN0cmFibGUtZG9t
YWluIl9zLCByZWdpc3RyYWJsZURvbWFpbigpLnN0cmluZygpKTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpCit2b2lkIFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk6OnN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2
aWNlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsIGluaXRp
YWxTZXNzaW9uSUQudmFsdWVPcihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSB9
LCAwKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdl
R3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2
aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4oKSwgc2Vzc2lvbklEIH0s
IDApOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnNldFVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAppbmRleCBkODBjMWE1YjJiMDE2NjgwODliMzYx
NDJlZjkxZTNkZDMyZmI0YWIxLi5lNjU2NzU1MTk1M2UwMzY2ZTg0YzM4Y2E1NmY0ODY0NTE4Mzlh
NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29s
IGhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJE
aXJlY3RvcnkpOwogCi0gICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwg
T3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpOworICAgIHZvaWQgc3Rh
cnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lk
IHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2Vz
U3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZTMyZWI0Mzc2MzU0MGI5NmEwMTE4MzMzODQx
MjFlZjAwOTNhNWI2Yi4uODE5NjcyY2ZhOTE1ZjI5YjE5ODMyNDVlYzkyNjRjYjM5MzNhMDhhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNzAxLDcg
KzcwMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94CiB9CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklE
PiBzZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHByb3h5LCAmcHJveHkgPT0gbV9uZXR3b3JrUHJv
Y2Vzcy5nZXQoKSk7CiAKQEAgLTcxMCw5ICs3MTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1By
bwogCiAgICAgbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmNsZWFyKCk7CiAKLSAg
ICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlID0gbnVsbHB0cjsKLSAgICBpZiAo
c2Vzc2lvbklEKQotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6
ZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklEKCpzZXNzaW9uSUQpOworICAg
IFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpl
eGlzdGluZ05vbkRlZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIAogICAg
IGlmICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9y
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGY5NDM2N2Zi
YTljMWY2NmY0YjNjOTQwZGUxNjc0YjhkZGE2YTU3YTQuLjBhNmQ4Y2VhZDUxNWEyNjFiZGNhN2Nj
MTQ1ZWM1ZGFiZDFiYzVkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaApAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29y
a2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OwogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKKyAgICB2b2lkIGVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5
JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIGNv
bnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkqPiYgc2VydmljZVdvcmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzZXM7IH0KICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRl
Rm9yU2VydmljZVdvcmtlcihib29sIGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRl
Rm9yU2VydmljZVdvcmtlciA9IGFsbG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4
IGJmYzVmZDYyMDFlY2ZhOWEzMzc3NTBlZGVjMjEyZTI1M2IzMmEzYzUuLmZiMTgzYzk5Y2Q1ZGI3
NTAwZjdmZmZiMjkwN2NjYzFjM2E5ODVhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApA
QCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewotICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25z
QnlJZGVudGlmaWVyLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKTsKKyAgICAgICAgYXV0byBz
ZXJ2aWNlV29ya2VyQ29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5nZXQoUEFM
OjpTZXNzaW9uSUQgeyBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSB9KTsKICAgICAgICAgaWYgKHNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uKQogICAgICAgICAgICAgc2VydmljZVdvcmtlckNvbm5lY3Rp
b24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1
cm47CkBAIC0yMDIsOCArMjAyLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICBhdXRvIGNvbm5lY3Rpb25zID0gc3RkOjpleGNoYW5nZShtX3N3Q29ubmVjdGlv
bnNCeUlkZW50aWZpZXIsIHsgfSk7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogY29ubmVj
dGlvbnMudmFsdWVzKCkpCisgICAgYXV0byBzd0Nvbm5lY3Rpb25zID0gc3RkOjpleGNoYW5nZSht
X3N3Q29ubmVjdGlvbnNCeVNlc3Npb24sIHsgfSk7CisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9u
IDogc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkKICAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlv
blRvU2VydmVyTG9zdCgpOwogI2VuZGlmCiB9CkBAIC0yNzEsMjUgKzI3MSw2IEBAIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbkZvclNlc3NpCiAgICAgICAgIHJldHVybiBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNy
ZWF0ZShzZXNzaW9uSUQpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KLQotdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVu
dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKG1fc3dDb25uZWN0aW9uc0J5
SWRlbnRpZmllci5jb250YWlucyhjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KCkpKTsKLSAgICBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIucmVtb3ZlKGNvbm5lY3Rpb24u
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSk7Ci19Ci0KLVNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjppbml0aWFsaXplU1dDbGllbnRDb25u
ZWN0aW9uKFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBBU1NFUlQo
Y29ubmVjdGlvbi5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpOwotICAgIFNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAgICBib29sIHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
OjpSZXBseShpZGVudGlmaWVyKSwgMCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7Ci0KLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllci5jb250YWlucyhp
ZGVudGlmaWVyKSk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmFkZChpZGVudGlm
aWVyLCAmY29ubmVjdGlvbik7Ci0KLSAgICByZXR1cm4gaWRlbnRpZmllcjsKLX0KICNlbmRpZgog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlm
aWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAwMDcxZGIxZjc2YjYwZjYxNTVhZTA0YTM2
YjY4ZGI5NGJmMTY3MTYxLi4yMGIzYThiOWIxNDU5NzA2ZTMyZTM4YmU2YjVmMjQ4MDhkYmVlNWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNzgsOSArNzgsNiBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiogZXhpc3Rp
bmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSB7IHJldHVybiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZ2V0KHNlc3Npb25JRCk7IH0K
ICAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vz
c2lvbihQQUw6OlNlc3Npb25JRCk7Ci0KLSAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIGluaXRpYWxpemVTV0NsaWVudENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0
aW9uJik7Ci0gICAgdm9pZCByZW1vdmVTV0NsaWVudENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25u
ZWN0aW9uJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTExNCw3ICsxMTEsNiBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIFJlZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+PiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Np
b247Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBX
ZWJTV0NsaWVudENvbm5lY3Rpb24qPiBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXI7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGU3NWVlZmFkMTU0NzNhNzBhY2VkYmE4
MjYzM2IwNTQ0NTAxYTIyYzAuLjhiYjgwNzBmYjhkOWVlMTAyNzFiOTU3ZDU0ZDhiZGM0MDFkOTMx
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUuaCIK
ICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YS5oPgpAQCAtNTUsNzcgKzU3LDYxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNzaW9u
SUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9pZGVu
dGlmaWVyKG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJU
eXBlPihQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSkpCiAgICAgLCBtX3N3T3JpZ2lu
VGFibGUobWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigpKQogewogICAgIEFTU0VSVCht
X3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQo
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0
YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIHsgc2Vzc2lvbklEIH0pOwogfQogCiBXZWJTV0NsaWVu
dENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24oKQogewotICAgIGlmIChtX2Nvbm5l
Y3Rpb24pCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLnJlbW92ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhpcyk7CisgICAgY2xl
YXIoKTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0
aW9uSWZOZWVkZWQoKQorSVBDOjpDb25uZWN0aW9uKiBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb25uZWN0aW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
LQotICAgIG1fY29ubmVjdGlvbiA9ICZuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpOwotICAgIG1faWRlbnRpZmllciA9IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5pbml0aWFs
aXplU1dDbGllbnRDb25uZWN0aW9uKCp0aGlzKTsKLQotICAgIHVwZGF0ZVRocm90dGxlU3RhdGUo
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9u
OjplbnN1cmVDb25uZWN0aW9uQW5kU2VuZChjb25zdCBVJiBtZXNzYWdlKQotewotICAgIGluaXRp
YWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAg
ICBzZW5kKG1lc3NhZ2UpOworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCiB2b2lkIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYgam9iRGF0YSkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNz
YWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpvYkluU2VydmVyKGpvYkRhdGEp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNjaGVkdWxlSm9i
SW5TZXJ2ZXIgeyBqb2JEYXRhIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmIHJlc3VsdCkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJlc3VsdCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hp
bmdTY3JpcHRJblNlcnZlciB7IHJlc3VsdCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rp
b25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkFkZFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2
ZXIgeyBpZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVt
b3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVtb3ZlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkluU2VydmVyKGlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZl
ciB7IGlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU2Vy
dmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VJZGVudGlmaWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIH0sIDApOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJj
ZUlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxp
bmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRh
dGEoKSwgZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgdXNlckFnZW50IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0YSwg
Y29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNlckFnZW50
IH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKQogewotICAg
IGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OlVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIgeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllciB9
IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQgeyBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyIH0gfSk7CiB9CiAK
IHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlz
ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgZW5zdXJl
Q29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RGlkUmVz
b2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uoa2V5KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSB7IGtleSB9KTsK
IH0KIAogYm9vbCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1heUhhdmVTZXJ2aWNlV29ya2VyUmVn
aXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikgY29uc3QK
QEAgLTE3NiwyNSArMTYyLDI0IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJl
Z2lzdHJhdGlvbihTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvCiAgICAgcnVuT3JE
ZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRv
cE9yaWdpbiA9IFdURk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAg
ICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVy
OwogICAgICAgICBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzLmFkZChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxiYWNr
SUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6TWF0Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3JpZ2lu
LCBjbGllbnRVUkwpKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit2
b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVuY3Rp
b248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fc3dPcmlnaW5UYWJsZS0+aXNJbXBvcnRl
ZCgpKSB7CiAgICAgICAgIHRhc2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3Rh
c2tzUGVuZGluZ09yaWdpbkltcG9ydC5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Ci0gICAgaW5pdGlh
bGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3Jp
Z2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2Fs
bGJhY2tJZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3MuYWRk
KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5k
U2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVh
ZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFja0lE
LCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6cmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQpAQCAtMjE2LDI5ICsy
MDEsMzIgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMoU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24KICAgICBydW5PckRlbGF5VGFza0Zvcklt
cG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0gV1RG
TW92ZSh0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAgIG1f
b25nb2luZ0dldFJlZ2lzdHJhdGlvbnNUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwotICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwg
Y2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6R2V0UmVnaXN0cmF0aW9ucyB7IGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMIH0p
OwogICAgIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChG
ZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIgfSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVx
dWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHko
KSB9LCByZWZlcnJlciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNhbmNl
bEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQog
ewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNv
bnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZp
ZXIgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250aW51
ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewotICAgIG1fY29ubmVjdGlvbiA9IG51bGxw
dHI7CisgICAgY2xlYXIoKTsKK30KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNsZWFy
KCkKK3sKICAgICBhdXRvIHJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdNYXRj
aFJlZ2lzdHJhdGlvblRhc2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0
aW9uVGFza3MudmFsdWVzKCkpCiAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CkBAIC0y
NDcsMzEgKzIzNSwyNiBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvblRv
U2VydmVyTG9zdCgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGdldFJlZ2lzdHJhdGlvblRh
c2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayh7IH0pOwogCisgICAgYXV0byByZWdpc3Ry
YXRpb25SZWFkeVRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRhc2tz
KTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uUmVhZHlUYXNrcy52YWx1
ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKwogICAgIGNsZWFyUGVuZGluZ0pvYnMoKTsK
IH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBpbml0aWFsaXplQ29ubmVj
dGlvbklmTmVlZGVkKCk7Ci0KLSAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChpZGVudGlmaWVyKSwgTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQ6
OlJlcGx5KCkpOwotfQotCi1XZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAot
ewotICAgIGNvbnN0X2Nhc3Q8V2ViU1dDbGllbnRDb25uZWN0aW9uKj4odGhpcyktPmluaXRpYWxp
emVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3Jr
ZXJGcm9tQ2xpZW50IHsgaWRlbnRpZmllciB9LCBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudDo6UmVwbHkoKSk7CiB9CiAKIHZvaWQg
V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKIHsKICAgICBtX2lz
VGhyb3R0bGVhYmxlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXJlQWxsUGFnZXNUaHJvdHRs
ZWFibGUoKTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgbV9pc1Rocm90dGxlYWJsZSB9KTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNldFRocm90dGxlU3RhdGUg
eyBtX2lzVGhyb3R0bGVhYmxlIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
c3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpT
dG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2sgeyB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgKaW5kZXggM2FmNDk1ZGNhOTQ0ZGVkYzkxZjU0M2NiZGQ2MTMxYjcwMzllYjky
My4uZWZlZjM2YmNhY2QyODU0NTdiZTAxNGY4ZDRjYmM5ZGE2OTljMmY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU1dDbGll
bnRDb25uZWN0aW9uPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7IHNlc3Npb25JRCB9KTsgfQogICAg
IH5XZWJTV0NsaWVudENvbm5lY3Rpb24oKTsKIAotICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsK
KyAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAg
ICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwpAQCAtNzQsOCArNzQsNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlNXQ2xpZW50Q29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLQogICAgIHZv
aWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKICAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKSBm
aW5hbDsKQEAgLTk3LDI3ICs5NSwyNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZVN0
b3JhZ2VKb2IoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKTsKIAotICAgIHZv
aWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzayk7
CisgICAgdm9pZCBydW5PckRlbGF5VGFza0ZvckltcG9ydChGdW5jdGlvbjx2b2lkKCk+JiYgdGFz
ayk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAgdWludDY0X3QgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKTsgfQorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0KIAog
ICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6
OkhhbmRsZSYpOwogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZUlzSW1wb3J0ZWQoKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoY29uc3Qg
VSYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAg
ICAgVW5pcXVlUmVmPFdlYlNXT3JpZ2luVGFibGU+IG1fc3dPcmlnaW5UYWJsZTsKIAogICAgIHVp
bnQ2NF90IG1fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXIgeyAwIH07CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2s+IG1fb25nb2luZ01hdGNoUmVnaXN0cmF0aW9u
VGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrPiBt
X29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2hl
blJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2s+IG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFz
a3M7Ci0gICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09yaWdp
bkltcG9ydDsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09yaWdp
bkltcG9ydDsKICAgICBib29sIG1faXNUaHJvdHRsZWFibGUgeyB0cnVlIH07CiB9OyAvLyBjbGFz
cyBXZWJTV1NlcnZlckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IGM5MjU3YWI3NWNjYTAwZWYwOTI0MGZkZTc4YzUxMjg2ZDgwYzcxY2UuLmYyMmNh
M2MxMzI1NzMyODEwNDc4NTkwZTY0N2JiZjdlYzEyYWViYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRl
ci5oIgpAQCAtODYsOCArODcsOSBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+IFNlcnZpY2VXb3JrZXJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUgogICAgIHJldHVy
biBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIH0K
IAotV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUdy
b3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCitXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQog
ICAgICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKICAgICAsIG1fcGFnZUlEKHBh
Z2VJRCkKQEAgLTk4LDYgKzEwMCw3IEBAIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uCiAjZW5kaWYK
IHsKICAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0b3JlKTsKKyAgICBtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fcmVnaXN0cmFibGVEb21haW4g
fSwgMCk7CiB9CiAKIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CkBAIC0yNTksOSArMjYyLDkgQEAgdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllcgogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1p
bmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBXVEZN
b3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbikKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3Vy
Y2VPcmlnaW4pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdl
LCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKIH0KIAogdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChPcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMTZjYzBkZWU3NTg4NDBjYzgyYzRj
NDI4ZGI0MzhjNDJiZjljM2NiZi4uYjVhMmM2OGFlMjAxZTVhYjcyM2M2MzAzMzMzMTk5ZjFlNTJi
ZTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01Myw3ICs1Myw3IEBA
IHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90
IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAg
IH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTY1LDcg
KzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCiAgICAgLy8gV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdl
cjo6Q29ubmVjdGlvbi4KLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZpbmlzaEluc3RhbGwoT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3Vj
Y2Vzc2Z1bCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBm
aW5hbDsKQEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFRocm90dGxlU3Rh
dGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IG1fcmVnaXN0cmFibGVEb21haW47CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKICAgICBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiAgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggNjRhZTEyMGY5Yjg5NjZhYzMwM2M1NWQ5NDc5MzQ5ODA3N2I2ZDhjMC4uMTcwMzBl
OWUyOWJjZjNjMzBlZGY2ODk1ZDQ3MzVmMWVlNmViMmFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTgxOCwxMyArMTgxOCwxMyBAQCBMaWJXZWJSVENOZXR3
b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklE
KQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBB
TDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAgICAgLy8gV2UgYXJlIGluIHRoZSBT
ZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlz
aGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKICAgICAvLyBieSBjYWxs
aW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVk
cyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAg
Ly8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMu
CiAgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRD
b25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nv
bm5lY3Rpb24sIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSkpOwor
ICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1
ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBz
dG9yZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZWMwZmJlMjJiOWUz
M2ZhOTA5NWZlNGE1YjI2M2RiMDEyY2UwODI0OS4uYmU3MTMwMTU4ODQwNzhiMzg0NWRhMmJjMTlj
MjkwNTRlMzcyNGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0z
NjUsNyArMzY1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vz
c2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkY2VlMWY0NzRjNWE2Y2Y2
MTlhMWI4NmQyODU0MDBiMDVkZGUzODUzLi5mNDQ5ZjVmNDk3NjI5MmNkZjA2YjU4MWU4MWMyYjQ3
YjQxOTEyMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90
IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKKyAg
ICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0
X3QgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4s
IFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiAgICAgUmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50cygpCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378359</attachid>
            <date>2019-09-09 02:50:08 -0700</date>
            <delta_ts>2019-09-12 00:00:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190909115006.patch</filename>
            <type>text/plain</type>
            <size>87223</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMwODI5NzJjY2RkNTY4
YmY4YWIxYTM4MmM4YzZhZDZhMGRmNGIzMS4uYmUyNDQ1OTJiMzU3NGZjZTMxMzEyNWNjMDEzNzBj
MGY0M2EwYWI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTA5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gb2JzZXJ2
YWJsZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lvbklEIHRvIGVhc2UgTmV0d29y
a1Byb2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2VzcyBjb25uZWN0aW9uLgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaDoKKyAgICAgICAgTWFy
ayBzZXJ2ZXIgY29ubmVjdGlvbiBpZGVudGlmaWVyIGJlIHByb2Nlc3MgaWRlbnRpZmllciBiYXNl
ZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICBMZXQgY29ubmVjdGlv
biBpZGVudGlmaWVyIGJlIHNldCBpbiBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGdlbmVyYXRlZC4K
KwogMjAxOS0wOS0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW92ZSBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSBmcm9tIHByb3ZpZGVyIHRv
IHJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjYjlmMzdkNzA5YTI3NmQxNzY1NDM0Yzkx
MmE3YTlkZWJlYWI5MTc0Li43MjJkZGM2YzBkYzM5MjA2MzFlNGJlNTE1ZjA1YzE4NDQ2ZjNiYTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOS0wOSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdlYlByb2Nlc3MgcHJv
Y2Vzc0lkZW50aWZpZXIgdG8gaWRlbnRpZnkgU2VydmljZSBXb3JrZXIgY29ubmVjdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTQ1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL1Nlc3Np
b25JRC5oOgorICAgICAgICAoUEFMOjpTZXNzaW9uSUQ6OlNlc3Npb25JRCk6CisKIDIwMTktMDgt
MzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZW1vdmUgSEFWRV9DRk5FVFdPUktfV0lUSF9BVVRPX0FEREVEX0hUVFBfSEVBREVSX1NVUFBS
RVNTSU9OX1NVUFBPUlQgY29uZGl0aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjRkM2IzYTgxODM2ZGU1ZTU5
NDhkMmRhYzU3ZThhMWU5YThjMjg4Yy4uMWY0MGNiMGIyYzFkZTk5YWM1MjgzNzExNDczNDNlMmEz
MWNhNGQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTEgQEAKKzIwMTktMDktMDkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBXZWJQcm9jZXNzIHByb2Nl
c3NJZGVudGlmaWVyIHRvIGlkZW50aWZ5IFNlcnZpY2UgV29ya2VyIGNvbm5lY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE0NTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbiBiZSBzdG9yZWQgaW4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
CisgICAgICAgIFRoZXkgYXJlIG5vdyBrZXllZCBieSBzZXNzaW9uIElEcyBoZW5jZSB3aHkgV2Vi
U1dDbGllbnRDb25uZWN0aW9uIGlzIHVzaW5nIHRoZSBzZXNzaW9uIElEIGFzIG1lc3NhZ2UgY29u
bmVjdGlvbiBJRC4KKyAgICAgICAgQ3JlYXRpb24gbm8gbG9uZ2VyIHJlcXVpcmVzIGEgc3luYyBJ
UEMgc2luY2UgdGhlIGNvbm5lY3Rpb24gaXMgdW5pcXVlbHkgaWRlbnRpZmllZCBieSBpdHMgc2Vz
c2lvbiBJRCBhbmQgaXRzIHByb2Nlc3MgSUQuCisgICAgICAgIFRoZXNlIElEcyBhcmUgc3RhYmxl
IG92ZXIgbmV0d29yayBwcm9jZXNzIGNyYXNoLgorICAgICAgICBXaXRoaW4gTmV0d29ya1Byb2Nl
c3MsIGEgc2VydmVyIGNvbm5lY3Rpb24gaXMgbWFuYWdlZCBieSBhIFNXU2VydmVyIHdoaWNoIGlz
IHNlc3Npb24gSUQgc3BlY2lmaWMuCisgICAgICAgIEluIHRoYXQgY2FzZSwgdGhlIHByb2Nlc3Mg
aWRlbnRpZmllciB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBjb25uZWN0aW9uLgorCisgICAgICAg
IE1vdmUgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIGJlIG93bmVkIGJ5IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICBJbnN0ZWFkIG9mIGNyZWF0aW5nIGl0IHdo
ZW4gd2VicHJvY2VzcyBpcyBjb25uZWN0aW5nIHRvIG5ldHdvcmsgcHJvY2VzcywgdXNlIGEgZGVk
aWNhdGVkIElQQyBtZXNzYWdlLgorICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uIG9uY2UgV2ViUHJvY2VzcyBhc2tzIHRvIGNyZWF0ZSBpdC4KKyAgICAgICAg
VGhpcyB3aWxsIGFsbG93IGV4aXN0aW5nIFdlYlByb2Nlc3MsIGluIGNhY2hlIG9yIHJ1bm5pbmcg
cGFnZXMsIHRvIHJ1biBzZXJ2aWNlIHdvcmtlcnMgYXMgd2VsbC4KKyAgICAgICAgQSBjb250ZXh0
IGNvbm5lY3Rpb24gbWFwIGlzIGtlcHQgaW4gTmV0d29yayBQcm9jZXNzIHRvIHJldXNlIGNvbnRl
eHQgY29ubmVjdGlvbnMgc2luY2UgdGhlc2UgY29ubmVjdGlvbnMgYXJlIG5vdCBzZXNzaW9uSUQg
c3BlY2lmaWMuCisKKyAgICAgICAgTWlncmF0ZSBmcm9tIGEgc2luZ2xlIGJvb2xlYW4gdG8gYSBI
YXNoU2V0IHRvIHRyYWNrIHdoZXRoZXIgc29tZSBjb25uZWN0aW9ucyBhcmUgaW4gdGhlIHByb2Nl
c3Mgb2YgYmVpbmcgY3JlYXRlZC4KKyAgICAgICAgUHJldmlvdXNseSBpZiB0d28gcmVxdWVzdHMg
dG8gY3JlYXRlIGNvbm5lY3Rpb25zIHdlcmUgZG9uZSBzaG9ydGx5IG9uZSBhZnRlciB0aGUgb3Ro
ZXIgb24gZGlmZmVyZW50IHJlZ2lzdHJhYmxlCisgICAgICAgIGRvbWFpbnMsIHRoZSBzZWNvbmQg
cmVxdWVzdCB3b3VsZCBub3QgYmUgcHJvY2Vzc2VkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZvckVhY2hT
V1NlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZWVkc1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dT
ZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnVucmVn
aXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnVucmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0
aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6b3Blbk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpzdGFydCk6CisgICAgICAgICog
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vz
c2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmV4aXN0
aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpz
Y2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDbGllbnRDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNo
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Ub1NlcnZlckxvc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzeW5j
VGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9u
Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV91c2VyQWdlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
CiAyMDE5LTA5LTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2UgV2ViUHJvY2VzcyBwcm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBJREIgY29ubmVj
dGlvbnMgYmV0d2VlbiBXZWJQcm9jZXNzIGFuZCBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvU2Vzc2lvbklELmgKaW5kZXggYzcxZDZhMmJhZWNjYzAzMzQ5NzZlZWIxZDMxMTcyYzcwZGVk
NGNjYi4uZTE0NDNmMGI4MDUxZTNjMzAxM2MyOWZmODgzOWU1MDhmYzI2Y2NmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL1Nlc3Npb25JRC5oCkBAIC01NSw2ICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAorICAgIGV4cGxpY2l0IFNlc3Npb25JRCh1aW50NjRfdCBpZGVudGlmaWVyKQorICAg
ICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisKICAgICBQQUxf
RVhQT1JUIHN0YXRpYyBTZXNzaW9uSUQgZ2VuZXJhdGVFcGhlbWVyYWxTZXNzaW9uSUQoKTsKICAg
ICBQQUxfRVhQT1JUIHN0YXRpYyBTZXNzaW9uSUQgZ2VuZXJhdGVQZXJzaXN0ZW50U2Vzc2lvbklE
KCk7CiAgICAgUEFMX0VYUE9SVCBzdGF0aWMgdm9pZCBlbmFibGVHZW5lcmF0aW9uUHJvdGVjdGlv
bigpOwpAQCAtNzYsMTEgKzgxLDYgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBTZXNzaW9uSUQodWludDY0X3QgaWRlbnRpZmllcikKLSAgICAgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKLSAgICB7Ci0gICAgfQotCiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZFNl
c3Npb25JRFZhbHVlKHVpbnQ2NF90IHNlc3Npb25JRCkgeyByZXR1cm4gc2Vzc2lvbklEICE9IEhh
c2hUYWJsZUVtcHR5VmFsdWVJRCAmJiBzZXNzaW9uSUQgIT0gSGFzaFRhYmxlRGVsZXRlZFZhbHVl
SUQ7IH0KIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRleCA3Mzkx
YzRjMjFhMzZkNTBkNzdmMjA2ZDdiM2VlYmQwNWIwNjQwNGUwLi43NjBjNGNkMGEzYzZlZWQ3NWU4
YTg2ODY2MmU5NWM0OTA1OTAxNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC05OSw5ICs5OSw5IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAKICAgICBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNz
YWdlID0geyBtZXNzYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcG9ydHNPckV4Y2VwdGlv
bi5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgIGF1dG8gc291cmNlSWRlbnRpZmllciA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuaWRlbnRp
ZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2Up
LCBkZXN0aW5hdGlvbklkZW50aWZpZXIgPSBpZGVudGlmaWVyKCksIHNvdXJjZUlkZW50aWZpZXIs
IHNvdXJjZU9yaWdpbiA9IGNvbnRleHQub3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFi
bGUgeworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IGNvbnRleHQuc2Vzc2lvbklE
KCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIgPSBp
ZGVudGlmaWVyKCksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRleHQub3Jp
Z2luKCkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0byogY29u
bmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKLSAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwg
c291cmNlT3JpZ2luKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdl
LCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogICAgIH0pOwogCiAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyVHlwZXMuaAppbmRleCBmMDI4ZDI0YjQ2ZTNiYWUwYjY2Y2YyMjcxMTlhOWQ4NzdiMjFjMDZj
Li44ODZjNWFkNDkwMjA3YWRiMTcxM2NiZjcxNWY4MzQ3Yjc2YzUxMTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiRG9j
dW1lbnRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KQEAgLTcwLDcgKzcxLDcgQEAgdXNp
bmcgU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNlcnZpY2VX
b3JrZXJKb2JJZGVudGlmaWVyVHkKIGVudW0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRl
bnRpZmllclR5cGUgeyB9OwogdXNpbmcgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRp
ZmllclR5cGU+OwogCi1lbnVtIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlIHsgfTsK
K3VzaW5nIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlID0gUHJvY2Vzc0lkZW50aWZp
ZXJUeXBlOwogdXNpbmcgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50
aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+OwogCiB1c2luZyBEb2N1bWVu
dE9yV29ya2VySWRlbnRpZmllciA9IFZhcmlhbnQ8RG9jdW1lbnRJZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggZmUwYzA4NDkyYzM1MjE3
YTIzNmUyMzJjMDZiYzVhYjYzNjc4ODZhMS4uZmZmYjcxMWRlMGIyZmRmYjdkYWE5MWQ5NjBlNDRh
M2E5ZjkxMDNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCkgeyB9CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNlcnZp
Y2VXb3JrZXJTdGFydGVkKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4s
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlckZhaWxlZFRvU3RhcnQoT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
SW5zdGFsbChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDQ2ODRh
YTUxMmNmODYyY2UxZjk5MDRkMjE5Nzk2YjVhNWM2ZWRjMmIuLmQ2NjQ0Njg3NDAyN2UzZDdmN2I3
N2VlZTZhM2M1MzliZjUyNmI1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC01MCw5ICs1MCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIFNlY29uZHMgdGVybWluYXRpb25EZWxheSB7IDEwX3MgfTsKIAot
U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZlcikKK1NXU2Vy
dmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIElkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICA6IG1fc2VydmVyKHNlcnZlcikKLSAgICAsIG1faWRlbnRpZmllcihT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAzMGUyYWY1Y2FlMDRkN2ZlYTMyODc0NjQwNTdl
MTVjODc0NzY2Y2IzLi41Y2NmMmY0Mzk5MjkwMWZmNDY5NjZlNGI4OTcxN2E4MzMxZTdiMzQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIGVu
dW0gY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgU2VydmljZVdvcmtlclN0YXRlIDogdWludDhfdDsKIHN0cnVjdCBFeGNlcHRpb25EYXRh
Oworc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogc3RydWN0IFNlcnZpY2VXb3JrZXJD
bGllbnRRdWVyeU9wdGlvbnM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogc3Ry
dWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKQEAgLTg2LDYgKzg3LDcgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVnaXN0cmF0aW9uVXBkYXRlVmlhQ2FjaGUoU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNo
ZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNo
YW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlmaWVy
cywgY29uc3QgU2VydmljZVdvcmtlckRhdGEmIG5ld0NvbnRyb2xsZXIpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHJlZ2lzdHJhdGlvblJlYWR5
UmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KERv
Y3VtZW50SWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pID0gMDsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJikgPSAwOwogCkBAIC05Myw3ICs5NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY29uc3QgU1dTZXJ2ZXImIHNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVy
OyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bm5lY3Rpb24oU1dTZXJ2ZXImKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ29ubmVjdGlvbihT
V1NlcnZlciYsIElkZW50aWZpZXIpOwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQm
KTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0MTI4YTRiYzkyN2MwZDZjYjBhOWFjMDYwYjQ3NjQx
ZTgwNWU5YjEyLi5jN2VhYjQ0MzFkZGNkYTNhMTdkZjE5MWYyZDQwODgwN2VkNWUyNDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjEzLDIxICsyMTMsMjIgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW8KICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byBzd0Nv
bm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQor
ICAgICAgICBpZiAoYXV0byBzd0Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnMuZ2V0KFBBTDo6
U2Vzc2lvbklEIHsgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkgfSkpCiAgICAgICAgICAgICBzd0Nv
bm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBtX25l
dHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9u
KGNvbm5lY3Rpb24pKSB7Ci0gICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIEFTU0VSVChtX3N3Q29udGV4
dENvbm5lY3Rpb24pOworICAgICAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAg
ICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRvQ29u
dGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewotICAgICAgICAgICAg
Y29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0aW9uKTsKKyAgICAg
ICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICAgICAgbV9zd0NvbnRleHRD
b25uZWN0aW9uLT5kaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTI2OCw3ICsyNjks
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8gc3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChtYWtlT2JqZWN0SWRlbnRp
ZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlv
bklEKCkpKSkKKyAgICAgICAgaWYgKGF1dG8gc3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25z
LmdldChQQUw6OlNlc3Npb25JRCB7IGRlY29kZXIuZGVzdGluYXRpb25JRCgpIH0pKQogICAgICAg
ICAgICAgc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjg1LDEwICsyODYsMTkg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFJlZlB0cjxXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24+IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBtX25ldHdvcmtQcm9jZXNzLT5j
b25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7
Ci0gICAgICAgIC8vIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgZXhpdGVkLgotICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZChzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICByZXR1cm47Cisg
ICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBhdXRvJiByZWdpc3RyYWJs
ZURvbWFpbiA9IG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+cmVnaXN0cmFibGVEb21haW4oKTsKKwor
ICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWQoKTsKKworICAg
ICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEOworICAgICAgICBtX25ldHdv
cmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikgeworICAgICAgICAg
ICAgc2VydmVyLm1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFibGVEb21haW5Bc1Rlcm1pbmF0ZWQo
cmVnaXN0cmFibGVEb21haW4pOworICAgICAgICAgICAgaWYgKHNlcnZlci5uZWVkc1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikp
CisgICAgICAgICAgICAgICAgc2Vzc2lvbklEID0gc2VydmVyLnNlc3Npb25JRCgpOworICAgICAg
ICB9KTsKKyAgICAgICAgaWYgKHNlc3Npb25JRCkKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4sICpz
ZXNzaW9uSUQpOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwpA
QCAtODY4LDE4ICs4NzgsMjMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9j
ZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBhdXRvIGNvbm5lY3Rpb24g
PSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2Vy
dmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7Ci0gICAgCi0gICAgU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rp
b24tPmlkZW50aWZpZXIoKTsKLSAgICBMT0coU2VydmljZVdvcmtlciwgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24gLSAlcyIsIHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9u
ZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fd2ViUHJvY2Vzc0lk
ZW50aWZpZXIsIHNlc3Npb25JRCk7CiAKLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9ucy5jb250
YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOwotICAgIG1fc3dDb25uZWN0aW9ucy5h
ZGQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1ha2VXZWFrUHRyKCpjb25uZWN0aW9uKSk7
CisgICAgQVNTRVJUKCFtX3N3Q29ubmVjdGlvbnMuY29udGFpbnMoc2Vzc2lvbklEKSk7CisgICAg
bV9zd0Nvbm5lY3Rpb25zLmFkZChzZXNzaW9uSUQsIG1ha2VXZWFrUHRyKCpjb25uZWN0aW9uKSk7
CiAgICAgc2VydmVyLmFkZENvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSk7Ci0gICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpOworfQor
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRD
b25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCit7CisgICAg
bV9zd0NvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpj
cmVhdGUobV9uZXR3b3JrUHJvY2VzcywgcmVnaXN0cmFibGVEb21haW4sIG1fY29ubmVjdGlvbi5n
ZXQoKSk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8m
IHNlcnZlcikgeworICAgICAgICBzZXJ2ZXIuc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQoKm1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCmluZGV4IDg5YzkzMTUxMTNjNGIyZThiOTlhNWQ0ODYwMTI2NDRkMjJk
YjhmNDEuLjY2YTYyZjMyMDA1ZTI4OThjNTdkMDkyZDc2OWViZjVjNGI3YmM3NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgTmV0d29ya1NvY2tldENo
YW5uZWw7CiBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFtOwogY2xhc3MgV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyOwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKQEAgLTIwOCw3ICsyMDksOCBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBl
c3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciYmKT4mJik7Cisg
ICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQpOworICAg
IHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCk7CiAjZW5kaWYKIApA
QCAtMzE5LDcgKzMyMSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAg
IEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4g
bV9zd0Nvbm5lY3Rpb25zOworICAgIFJlZlB0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BB
WV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBhOWM1ZjYxODE4NjI0YTY5MDUxZGQ3MGNmMTk5MDIzM2ZlNjA3MmE1Li45NzhmMDAwZDU4
NmFhMzNlNDdjYzA2ZDI3OTlmNjI0YzY5MDUzMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgxLDcgKzgxLDggQEAgbWVzc2FnZXMgLT4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgRXN0
YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICBF
c3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRv
bWFpbikKICNlbmRpZgogCiAgICAgQ3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKHN0cnVjdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDEsIHN0cnVjdCBXZWJDb3JlOjpNZXNz
YWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDFlMzI2YmUwNDFmNzY5NGZlZWI4NjgwNGUwY2Vj
YzFjZmU5YmMzMDMuLjMxOTk4MDc5YmFmZWZiMmU1YzEzODRhOTRjZDNhZDU3OTMxZjAyMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBA
IC0yMjgsMTcgKzIyOCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyCiAgICAgfQogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICAgICAgaWYgKCFwYXJlbnRQcm9jZXNz
SGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmIChhdXRvKiB3ZWJTV0Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vz
c0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7Ci0gICAgICAgICAgICB3ZWJTV0Nvbm5l
Y3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCiAgICAgZGlkUmVjZWl2ZU5ldHdv
cmtQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIApAQCAtNDI5LDcgKzQx
OCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
IGlwY0Nvbm5lY3Rpb24gPSBjcmVhdGVJUENDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CiAgICAg
aWYgKCFpcGNDb25uZWN0aW9uKSB7CkBAIC00NDYsMjQgKzQzNSw2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlm
aWVyIGlkZW50CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShpcGNDb25uZWN0aW9uLT5z
ZWNvbmQpKTsKIAogICAgIGNvbm5lY3Rpb24uc2V0T25MaW5lU3RhdGUoTmV0d29ya1N0YXRlTm90
aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKLSAgICAKLSNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MpIHsKLSAgICAgICAgQVNTRVJU
KHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgICAgIEFT
U0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAg
ICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFibGVEb21haW4sIGNvbm5lY3Rpb24uY29ubmVjdGlv
bigpKTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25zLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgY29udGV4dENvbm5lY3Rpb24uY29w
eVJlZigpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKLQotICAgICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29u
bmVjdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIGZvciAoYXV0byogc2VydmVyIDogU1dTZXJ2ZXI6
OmFsbFNlcnZlcnMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nlc3MpOwotICAgIFVOVVNFRF9QQVJBTShyZWdpc3Ry
YWJsZURvbWFpbik7Ci0jZW5kaWYKIAogICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPmFkZENvbm5l
Y3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOwogfQpAQCAtMjQxNiwzNiArMjM4NywxMCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZQogI2VuZGlmIC8vIEVOQUJMRShTQU5EQk9YX0VYVEVO
U0lPTlMpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zy
b21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBmb3Ig
KGF1dG8mIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBtX3NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25zLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gc2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2Fz
Q2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYgc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbikKLXsKLSAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24tPnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgCi0gICAgc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOwotICAgIG1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBm
b3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2Vy
dmVyLT5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lz
dHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBpZiAobmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJDb25uZWN0aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHBy
b2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3RpbGwgbmVlZGVkLCByZWxhdW5jaGluZyBpdCIpOwot
ICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWlu
LCBXVEY6Om51bGxvcHQpOwotICAgIH0KLX0KLQotYm9vbCBOZXR3b3JrUHJvY2Vzczo6bmVlZHNT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdAordm9pZCBOZXR3b3JrUHJvY2Vz
czo6Zm9yRWFjaFNXU2VydmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXImKT4mIGNhbGxi
YWNrKQogewotICAgIHJldHVybiBXVEY6OmFueU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0o
YXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJuIHN3U2VydmVyLT5uZWVkc1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7
Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkK
KyAgICAgICAgY2FsbGJhY2soKnNlcnZlcik7CiB9CiAKIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vz
czo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTI0NzMs
NDAgKzI0MTgsMzYgQEAgV2ViU1dPcmlnaW5TdG9yZSogTmV0d29ya1Byb2Nlc3M6OmV4aXN0aW5n
U1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQKICAgICByZXR1cm4gJnN0YXRp
Y19jYXN0PFdlYlNXT3JpZ2luU3RvcmUmPihzd1NlcnZlci0+b3JpZ2luU3RvcmUoKSk7CiB9CiAK
K2Jvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJl
Z2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bikgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjphbnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwg
WyZdKGF1dG8mIHN3U2VydmVyKSB7CisgICAgICAgIHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21h
aW4pOworICAgIH0pOworfQorCiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdv
cmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewogICAgIHJldHVy
biBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmdldChyZWdpc3RyYWJsZURvbWFpbik7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBPcHRpb25hbDxQQUw6
OlNlc3Npb25JRD4gc2Vzc2lvbklEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBpZiAobV93YWl0aW5nRm9y
U2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgaWYgKG1fcGVuZGluZ0Nvbm5l
Y3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9u
ID0gdHJ1ZTsKLSAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24ocmVn
aXN0cmFibGVEb21haW4sICpzZXNzaW9uSUQpLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhyZWdpc3Ry
YWJsZURvbWFpbiksIDApOwotfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2Us
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKQotewotICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29u
bmVjdGlvbnMuZ2V0KGRlc3RpbmF0aW9uSWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5jb250ZXh0SWRlbnRpZmllciwgV1RGTW92ZShtZXNz
YWdlKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKKyAgICBtX3BlbmRpbmdDb25u
ZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOworICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9t
YWluLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSwgU1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0
aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbikKIHsKLSAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25z
LmdldChjb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2Up
OworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25J
RCkuY29ubmVjdGlvbihkZXN0aW5hdGlvbklkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuY29udGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVz
c2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlv
biYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCgpKTsKLSAgICBBU1NFUlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250
YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwotICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9u
cy5hZGQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKTsK
ICAgICBhdXRvKiBzdG9yZSA9IGV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVj
dGlvbi5zZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKHN0b3JlKTsKICAgICBpZiAoc3RvcmUpCkBA
IC0yNTE1LDI2ICsyNDU2LDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2
ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvCiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIEFTU0VSVChtX3N3U2VydmVyQ29ubmVjdGlvbnMu
Z2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKS5nZXQoKSA9PSAmY29ubmVjdGlvbik7Ci0gICAg
bV9zd1NlcnZlckNvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiAg
ICAgaWYgKGF1dG8qIHN0b3JlID0gZXhpc3RpbmdTV09yaWdpblN0b3JlRm9yU2Vzc2lvbihjb25u
ZWN0aW9uLnNlc3Npb25JRCgpKSkKICAgICAgICAgc3RvcmUtPnVucmVnaXN0ZXJTV1NlcnZlckNv
bm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN3Q29udGV4
dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
Z2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBzZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgaWYgKG5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWlu
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIs
ICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIG5vIGxvbmdlciBuZWVkZWQsIHRlcm1pbmF0aW5n
IGl0Iik7Ci0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKLSAgICAK
LSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCi0gICAgICAg
IHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVk
KHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJl
bW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNTRVJUKCFtX3NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpOworICAg
IG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLnJlbW92ZShjb25uZWN0aW9uLnJlZ2lzdHJhYmxl
RG9tYWluKCkpOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rp
b24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNvbm5lY3Rpb24pOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjp1bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKG1fc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkgPT0gJmNvbm5l
Y3Rpb24pOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rp
b24ucmVnaXN0cmFibGVEb21haW4oKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpc2Fi
bGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDQwYjViNDkyYWI0NmI1ZWU2
ZDNmNWE3YTVhY2NhYTMwNTU5NjZhMWMuLjNhM2IxNTQ4MGRlNTRjNmI3YjNmMmZhYzExNDBlMDk1
YmI4NTE4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTMwMCwxNiArMzAwLDE3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIHNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYpOwotICAgIHZvaWQgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklE
Pik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIAogICAgIFdlYkNv
cmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogICAgIHZv
aWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJik7CiAg
ICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlv
biYpOwogICAgIAotICAgIHZvaWQgc3dDb250ZXh0Q29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVk
ZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7Ci0gICAgCi0gICAgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUEND
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgY29ubmVjdGlvblRvQ29udGV4
dFByb2Nlc3NXYXNDbG9zZWQoUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4mJik7
CisgICAgdm9pZCByZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKworICAgIGJvb2wgbmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hTV1NlcnZlcihjb25zdCBG
dW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNXU2VydmVyJik+Jik7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCkBAIC0zOTUsNyArMzk2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNz
YWdlIEhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNl
V29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKKyAgICB2b2lkIGNy
ZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+
JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC00NjQsMTMgKzQ2NSwxMiBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKICAgICAKLSAgICB2
b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKLSAgICB2
b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UsIFdl
YkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAg
ICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFBBTDo6U2Vzc2lvbklELCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRl
bnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
ICAgICAKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkoKTsKICAgICAKICAgICBXZWJTV09yaWdpblN0b3JlKiBleGlzdGluZ1NXT3JpZ2luU3RvcmVG
b3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKLSAgICBib29sIG5lZWRzU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9u
KFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCkBAIC01NDEsMTIg
KzU0MSwxMSBAQCBwcml2YXRlOgogICAgIExvY2sgbV9zdG9yYWdlVGFza011dGV4OwogICAgIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluLCBSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKLSAgICBib29sIG1fd2FpdGluZ0ZvclNlcnZlclRvQ29u
dGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPiBtX3NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25zOwogICAgIGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdv
cmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKICAgICBIYXNoTWFwPFBBTDo6
U2Vzc2lvbklELCBTdHJpbmc+IG1fc3dEYXRhYmFzZVBhdGhzOwogICAgIEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTV1NlcnZlcj4+IG1fc3dTZXJ2ZXJz
OwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vh
a1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+PiBtX3N3U2VydmVyQ29ubmVjdGlvbnM7CisgICAg
SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRv
bWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
YmYyMWEyZGM3YmFkYWY2MjAzOTVjZDA1YzYxZWQyNDEyMjkzMmY5ZC4uYWIzYmFiYjQ4NGU4N2Zi
MzMzNzNkOWE4OTZjMjUxMmQxOTY1MWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbml0
aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0IFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBh
IGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbikgLT4gKE9wdGlvbmFsPElQQzo6
QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50aWZpZXIpIEFzeW5jCisgICAgQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lkZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVu
dGlmaWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJv
b2wgaWdub3JlVExTRXJyb3JzKQpAQCAtMTUzLDEwICsxNTMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVy
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnks
IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZSk7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2Us
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmlu
ZyBzb3VyY2VPcmlnaW4pCi0KLSAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNs
aWVudElkZW50aWZpZXIgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotCisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAg
ICBEaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCkKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZiY2I5OWExMDBm
ODZiNjk5Yzc3MTVkNWI1ZjQ0ZjhlYWY2ODVmYmEuLmRlYWUyYjM5Y2I0YjlkN2E1ZTA1ZDFkN2Ri
MTIyYjVjN2Q0YTY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CkBAIC02MSw4ICs2MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogI2RlZmluZSBTV1NF
UlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3Jr
ZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdT
X18pCiAjZGVmaW5lIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX3Nlc3Npb25JRC5pc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0gV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAotV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBT
V1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlc3Npb25JRCBz
ZXNzaW9uSUQpCi0gICAgOiBTV1NlcnZlcjo6Q29ubmVjdGlvbihzZXJ2ZXIpCitXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIFNXU2VydmVyJiBzZXJ2ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIFNlc3Npb25JRCBzZXNzaW9uSUQp
CisgICAgOiBTV1NlcnZlcjo6Q29ubmVjdGlvbihzZXJ2ZXIsIHByb2Nlc3NJZGVudGlmaWVyKQog
ICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9jb250ZW50Q29ubmVjdGlvbihj
b25uZWN0aW9uKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKQEAgLTI1
MywxMyArMjUzLDEzIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzY2hlZHVsZUpvYklu
U2VydmVyKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKICAgICBzZXJ2ZXIoKS5zY2hl
ZHVsZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBk
ZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1l
c3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNv
bnRleHRJZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pCiB7CiAgICAgYXV0byogc291cmNlU2VydmljZVdvcmtlciA9IHNlcnZlcigp
LndvcmtlckJ5SUQoc291cmNlSWRlbnRpZmllcik7CiAgICAgaWYgKCFzb3VyY2VTZXJ2aWNlV29y
a2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENv
bm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50IHsgZGVzdGluYXRpb25D
b250ZXh0SWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlU2VydmljZVdvcmtlci0+
ZGF0YSgpLCBzb3VyY2VPcmlnaW4gfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRD
b25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCB7IGRlc3RpbmF0aW9u
Q29udGV4dElkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZVNlcnZpY2VXb3JrZXItPmRhdGEoKSwg
c291cmNlT3JpZ2luIH0pOwogfQogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWF0Y2hS
ZWdpc3RyYXRpb24odWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDkwMDIzZDY2MTg0ZmQy
ZDE4NzFkNDQ4OTYxN2EwZjlmNjcyYTAyOGIuLmFkZThlN2UzYTYzMGM2MTUwYjkxYWE5YWIyMDMw
NjY1NTY5Yzc3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU1dTZXJ2ZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTUzLDcgKzU0LDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiAKIGNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlcjo6Q29u
bmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKIHB1YmxpYzoKLSAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nl
c3MmLCBXZWJDb3JlOjpTV1NlcnZlciYsIElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklE
KTsKKyAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpT
V1NlcnZlciYsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQ
QUw6OlNlc3Npb25JRCk7CiAgICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbnN0IFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbiYpID0gZGVsZXRlOwogICAgIH5XZWJTV1NlcnZlckNvbm5lY3Rpb24oKSBm
aW5hbDsKIApAQCAtNjQsOSArNjUsNiBAQCBwdWJsaWM6CiAKICAgICBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogCi0gICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIg
ZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKLSAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UpOwotCiBwcml2
YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlvbiAoTWVzc2FnZXMgdG8g
dGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGEmKSBmaW5hbDsKQEAgLTk0LDYgKzkyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyJik7CiAgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3Jl
OjpEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pIGZpbmFsOworCiAgICAgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Q3JlYXRlZChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKSBmaW5hbDsKIAog
ICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzVGhyb3R0bGVhYmxl
OyB9CkBAIC0xMDIsOCArMTAyLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRUaHJvdHRsZVN0
YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgp
OwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYg
c291cmNlKTsKKwogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigpOyB9Ci0gICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBpZGVudGlmaWVyKCkudG9VSW50NjQoKTsgfQorICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQudG9VSW50NjQo
KTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyB2b2lkIHNlbmRUb0Nv
bnRleHRQcm9jZXNzKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFUmJiBt
ZXNzYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAppbmRleCBiZmU0MDNkZjVlYmEyODk0Njk3NTdjMzA0ODE4MTRkZTZiNWE3MzMw
Li43YjFlOTIwNzEwOWNkMTQ1MDc2YjlhYTcyMDA5OTUxMTlmMzhiZWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMjksMTEg
KzI5LDEzIEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiRm9ybURh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0
LDkgKzQ2LDEzIEBAIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuCiAgICAgLCBtX2lwY0Nvbm5lY3Rp
b24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1By
b2Nlc3MpCiB7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0
aW9uKCp0aGlzKTsKIH0KIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkgPSBkZWZhdWx0OworV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBt
X25ldHdvcmtQcm9jZXNzLT51bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9
CiAKIElQQzo6Q29ubmVjdGlvbiogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7CkBAIC02NSw2ICs3MSwxMiBAQCB2b2lkIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkNsb3NlZCgpCiAgICAgICAg
IGZldGNoLT5mYWlsKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCB7IH0sICJTZXJ2aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKIH0KIAordm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY29u
bmVjdGlvbihkZXN0aW5hdGlvbklkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIp
KQorICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChk
ZXN0aW5hdGlvbklkZW50aWZpZXIuY29udGV4dElkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlk
ZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7Cit9CisKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KQogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlciB7IGRhdGEsIHNlc3Npb25JRCwgdXNlckFn
ZW50IH0pOwpAQCAtMTE3LDcgKzEyOSwxNyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6ZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKIAogdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25NYXlOb0xvbmdlckJl
TmVlZGVkKCkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5zd0NvbnRleHRDb25uZWN0aW9uTWF5
Tm9Mb25nZXJCZU5lZWRlZCgqdGhpcyk7CisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MtPm5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxl
RG9tYWluKCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5h
dGluZyBpdCIpOworICAgIHRlcm1pbmF0ZSgpOworCisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Zm9y
RWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2ZXIpIHsKKyAgICAgICAgc2VydmVyLm1hcmtBbGxX
b3JrZXJzRm9yUmVnaXN0cmFibGVEb21haW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4o
KSk7CisgICAgfSk7CisKKyAgICBjb25uZWN0aW9uQ2xvc2VkKCk7CiB9CiAKIHZvaWQgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRs
ZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggOTBhMDdlYTI0YmJhZDMzNzU2N2E0YmVhMzcyMjVmMzgyMjExYWE1Yi4uMjBlYzE1
ZTZiZjk5ZjhlZDY5MmQwYmMyYjlkMmRhNWQwZTdmOGMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMzQsNiArMzQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOworc3RydWN0IE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQogCkBAIC04Miw2ICs4
Myw4IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKwogICAgIC8vIE1lc3Nh
Z2VzIHRvIHRoZSBTVyBob3N0IFdlYlByb2Nlc3MKICAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29y
a2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOwogICAgIHZvaWQgZmly
ZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbgppbmRleCA5OTQ5ZTNkNDM1ZjI0N2I1MGJmZDQ0NGQ1MDZkZTJhOTUyN2Rj
NTJkLi5lMzE1OGZjOTBiMzU3NGU0Yjg2MGJkMjQxYzI3YTFiMDQyNmViODNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KQEAgLTM2LDYgKzM2LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uIHsKICAgICBNYXRjaEFsbCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMg
b3B0aW9ucyk7CiAgICAgQ2xhaW0odWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwog
ICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwg
U3RyaW5nIG1pbWVUeXBlKTsKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJj
ZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDQ0OTAxYThjMzg3Yjc4MDA1MDk4N2Y5ZGIxNjVmNjQ0
MGYyYjE0MGIuLjUxYjNlOTA4MDY2ZTVmOGM0MWVkODAxZjYxYWU5YjEwMTdkZjQ4NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMTQyLDE2ICsxNDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlcwog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
dWludDY0X3QgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmIHdl
YlByb2Nlc3NQcm94eSkKIHsKLSAgICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxz
ZTsKLSAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbjsKLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KHdl
YlByb2Nlc3NQcm94eSkpIHsKLSAgICAgICAgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IHRydWU7
Ci0gICAgICAgIHJlZ2lzdHJhYmxlRG9tYWluID0gZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nl
c3NQcm94eT4od2ViUHJvY2Vzc1Byb3h5KS5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgIH0KLSNl
bmRpZgotCi0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlBy
b2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgaXNTZXJ2aWNlV29ya2VyUHJvY2Vz
cywgcmVnaXN0cmFibGVEb21haW4gfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5l
Y3Rpb25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRh
YmxlIHsKKyAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJv
Y2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNz
UHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRl
bnRpZmllcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTEyMDksMTIgKzEyMDAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQotewotICAgIG1fcHJvY2Vzc1Bv
b2wuZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlz
LCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgV1RGOjpudWxsb3B0KTsKLX0KLQotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewogICAgIG1fcHJvY2Vzc1Bvb2wuZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwg
c2Vzc2lvbklEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggODBkZmU2MGEyNDg0NDNkZDk1ZDFiZTkwYTlm
MTQxYmMxYmJjMWJjOS4uODhkYTdjMDRmNjYyYzg3YWI4MzM0OTJkYjg4OTA5Njc3YzQ2MzhhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTIzOCw4ICsyMzgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7Ci0g
ICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NG
b3JFeHBsaWNpdFNlc3Npb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNz
aW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsK
ICNlbmRpZgogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3Vy
cmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggZTRhZmU0YjViNzFhZjZiN2QzNDVmNTZiMGNmMWMxM2FkZGY2M2U1YS4uYTZkYmI3
YzVjOTM2MzNjMjE0NGZlZDlkZjk2NjlmM2JmNTNhZjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNjEsOCArNjEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1By
b3h5IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbikKLSAgICBFc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Np
b24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vz
c2lvbklEIGV4cGxpY2l0U2Vzc2lvbikKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFi
bGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICNlbmRpZgogCiAgICAgUmVxdWVz
dFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUs
IHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChPcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEp
IEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDhiM2E0MmNkMDcxZjU0MWYzMDRlMjVhNGEzYjBjYmQ1MDQ1
MDVlOTEuLmE0YmE5MmE5MDhmNmRiNDBkZTdlOTljZDM5MWY1YWM2NmRkMWZlZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHku
Y3BwCkBAIC03Niw5ICs3Niw5IEBAIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0
TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmCiAgICAgbGF1bmNo
T3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInJlZ2lzdHJhYmxlLWRvbWFpbiJf
cywgcmVnaXN0cmFibGVEb21haW4oKS5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eTo6c3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIE9w
dGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKQordm9pZCBTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5OjpzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHBy
b2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdv
cmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCBpbml0aWFsU2Vz
c2lvbklELnZhbHVlT3IoUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgfSwgMCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3Vw
KCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdv
cmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluKCksIHNlc3Npb25JRCB9LCAwKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpzZXRVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggZDgwYzFhNWIyYjAxNjY4MDg5YjM2MTQyZWY5
MWUzZGQzMmZiNGFiMS4uZTY1Njc1NTE5NTNlMDM2NmU4NGMzOGNhNTZmNDg2NDUxODM5YTRhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNS
ZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0
b3J5KTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIE9wdGlv
bmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKTsKKyAgICB2b2lkIHN0YXJ0KGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGIxMmE2MDA1YTI2ZTJiYjIxMmY2ZGNkNDc3YjJiODNk
ZWY1OGViYTIuLjU4MDI5MjQzMGQwZDZhZTQzNWQyOWVmODAwYWVlOGNjOTlkZjkxNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTY4Nyw3ICs2ODcs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2Vi
UHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveAogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vz
c2lvbklEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmIHByb3h5LCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChwcm94eSwgJnByb3h5ID09IG1fbmV0d29ya1Byb2Nlc3Mu
Z2V0KCkpOwogCkBAIC02OTYsOSArNjk2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KIAog
ICAgIG1fbWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycy5jbGVhcigpOwogCi0gICAgV2Vi
c2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHI7Ci0gICAgaWYgKHNlc3Np
b25JRCkKLSAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0
aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNlc3Npb25JRCgqc2Vzc2lvbklEKTsKKyAgICBXZWJz
aXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3Rp
bmdOb25EZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CiAKICAgICBpZiAo
IXdlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBmYTYzMWUwNDgzYjZh
OWVkZjI5Zjk4Y2FkY2E1OGVhMWVlMDI5ZjY3Li4yYmE2YTM0M2E1NzZhYmUzNDg2YjUxZWZmYzZh
MTIxNDcxNTA0YTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
QEAgLTM4MSw3ICszODEsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclBh
Z2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICBjb25zdCBI
YXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNl
cnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNl
cnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRl
Rm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNh
dGVGb3JTZXJ2aWNlV29ya2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA5NDlj
YWRhNmNjZjQ1MzNhZjc1MTdjNjQwZWQwZDJlNjBkNjkwNWVlLi44NzgwMDZlZDk1MzEyMDA0M2Nh
OWYwOTNlYWFkZWM3MDZjMzRiMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTEz
Nyw3ICsxMzcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAg
ICAgICAgYXV0byBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uc0J5SWRl
bnRpZmllci5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CisgICAgICAgIGF1dG8gc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZ2V0KFBBTDo6U2Vz
c2lvbklEIHsgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkgfSk7CiAgICAgICAgIGlmIChzZXJ2aWNl
V29ya2VyQ29ubmVjdGlvbikKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uLT5k
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24mKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgYXV0byBzd0Nvbm5lY3Rpb25zID0gc3RkOjpleGNoYW5nZShtX3N3Q29ubmVjdGlvbnNC
eUlkZW50aWZpZXIsIHsgfSk7CisgICAgYXV0byBzd0Nvbm5lY3Rpb25zID0gc3RkOjpleGNoYW5n
ZShtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24sIHsgfSk7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0
aW9uIDogc3dDb25uZWN0aW9ucy52YWx1ZXMoKSkKICAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVj
dGlvblRvU2VydmVyTG9zdCgpOwogI2VuZGlmCkBAIC0yNjQsMjUgKzI2NCw2IEBAIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbiYgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbkZvclNlc3NpCiAgICAgICAgIHJldHVybiBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNy
ZWF0ZShzZXNzaW9uSUQpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KLQotdm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW92ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVu
dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgQVNTRVJUKG1fc3dDb25uZWN0aW9uc0J5
SWRlbnRpZmllci5jb250YWlucyhjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KCkpKTsKLSAgICBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIucmVtb3ZlKGNvbm5lY3Rpb24u
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSk7Ci19Ci0KLVNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjppbml0aWFsaXplU1dDbGllbnRDb25u
ZWN0aW9uKFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKLXsKLSAgICBBU1NFUlQo
Y29ubmVjdGlvbi5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpOwotICAgIFNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAgICBib29sIHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxp
c2hTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
OjpSZXBseShpZGVudGlmaWVyKSwgMCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7Ci0KLSAgICBBU1NFUlQoIW1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllci5jb250YWlucyhp
ZGVudGlmaWVyKSk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmFkZChpZGVudGlm
aWVyLCAmY29ubmVjdGlvbik7Ci0KLSAgICByZXR1cm4gaWRlbnRpZmllcjsKLX0KICNlbmRpZgog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6bWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbWVzc2FnZVBvcnRJZGVudGlm
aWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBjZjNlZGUxNDEwMTkxOTEzNGEyYmQwODFh
MmRkZDAyMWRlN2E1NTQzLi4yYjRlYTFhNzk0ZGFlOTNlODNiODE0NWE1MDFiOGNhMzM0MmFkYjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNzgsOSArNzgsNiBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiogZXhpc3Rp
bmdTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSB7IHJldHVybiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Npb24uZ2V0KHNlc3Npb25JRCk7IH0K
ICAgICBXZWJTV0NsaWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vz
c2lvbihQQUw6OlNlc3Npb25JRCk7Ci0KLSAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIGluaXRpYWxpemVTV0NsaWVudENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25uZWN0
aW9uJik7Ci0gICAgdm9pZCByZW1vdmVTV0NsaWVudENvbm5lY3Rpb24oV2ViU1dDbGllbnRDb25u
ZWN0aW9uJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTExMyw3ICsxMTAsNiBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIFJlZlB0cjxXZWJTV0NsaWVudENvbm5lY3Rpb24+PiBtX3N3Q29ubmVjdGlvbnNCeVNlc3Np
b247Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBX
ZWJTV0NsaWVudENvbm5lY3Rpb24qPiBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXI7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGU3NWVlZmFkMTU0NzNhNzBhY2VkYmE4
MjYzM2IwNTQ0NTAxYTIyYzAuLmE4YWE2Nzk2MjI5MmFhOGEyM2NmYTY2OGI5ZjY3ZjVkMzQ3NDc3
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5oIgpAQCAtNDAsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUuaCIK
ICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YS5oPgpAQCAtNTUsNzcgKzU3LDYxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBXZWJTV0NsaWVudENvbm5lY3Rpb246OldlYlNXQ2xpZW50Q29ubmVjdGlvbihTZXNzaW9u
SUQgc2Vzc2lvbklEKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9pZGVu
dGlmaWVyKFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKICAgICAsIG1fc3dPcmlnaW5UYWJsZShtYWtl
VW5pcXVlUmVmPFdlYlNXT3JpZ2luVGFibGU+KCkpCiB7CiAgICAgQVNTRVJUKG1fc2Vzc2lvbklE
LmlzVmFsaWQoKSk7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOworICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7CiB9CiAKIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6fldlYlNXQ2xpZW50Q29ubmVjdGlvbigpCiB7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkucmVtb3ZlU1dDbGllbnRDb25uZWN0aW9uKCp0aGlzKTsKKyAgICBjbGVhcigpOwogfQog
Ci12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRl
ZCgpCitJUEM6OkNvbm5lY3Rpb24qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdAogewotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOwotCi0gICAgbV9j
b25uZWN0aW9uID0gJm5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCk7Ci0gICAg
bV9pZGVudGlmaWVyID0gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmluaXRpYWxpemVTV0NsaWVu
dENvbm5lY3Rpb24oKnRoaXMpOwotCi0gICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBVPgotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmVuc3VyZUNv
bm5lY3Rpb25BbmRTZW5kKGNvbnN0IFUmIG1lc3NhZ2UpCi17Ci0gICAgaW5pdGlhbGl6ZUNvbm5l
Y3Rpb25JZk5lZWRlZCgpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIHNlbmQobWVz
c2FnZSk7CisgICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiBqb2JEYXRhKQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OlNjaGVkdWxlSm9iSW5TZXJ2ZXIoam9iRGF0YSkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U2NoZWR1bGVKb2JJblNlcnZlciB7
IGpvYkRhdGEgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0
KQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OkZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIocmVzdWx0KSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyIHsgcmVzdWx0IH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6YWRk
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6QWRkU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkluU2VydmVyKGlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OkFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlciB7IGlkZW50
aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZW1vdmVTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SW5TZXJ2ZXIoaWRlbnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6UmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyIHsgaWRlbnRp
ZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmll
ciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBTZXJ2aWNlV29ya2Vy
T3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50
aWZpZXIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgfSwgMCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlciB7
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmll
ciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYgZGF0YSwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsK
LSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQgeyB0b3BPcmlnaW4uZGF0YSgpLCBkYXRh
LCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCB1c2VyQWdl
bnQgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQgeyB0b3BPcmlnaW4uZGF0YSgpLCBkYXRhLCBjb250cm9sbGlu
Z1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCB1c2VyQWdlbnQgfSk7CiB9CiAK
IHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dChEb2N1bWVudElkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29u
bmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQgeyBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyIH0gfSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpVbnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudCB7IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHsgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIoKSwgY29udGV4dElkZW50aWZpZXIgfSB9KTsKIH0KIAogdm9pZCBXZWJT
V0NsaWVudENvbm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9u
QW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpEaWRSZXNvbHZlUmVnaXN0
cmF0aW9uUHJvbWlzZShrZXkpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlIHsga2V5IH0pOwogfQogCiBib29s
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKSBjb25zdApAQCAtMTc2LDI1
ICsxNjIsMjQgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9u
KFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY28KICAgICBydW5PckRlbGF5VGFza0Zv
ckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0g
V1RGTW92ZSh0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAg
IG1fb25nb2luZ01hdGNoUmVnaXN0cmF0aW9uVGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUo
Y2FsbGJhY2spKTsKLSAgICAgICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6TWF0Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3Jp
Z2luLCBjbGllbnRVUkwpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpNYXRjaFJlZ2lzdHJhdGlvbihjYWxsYmFja0lELCB0b3BPcmlnaW4sIGNsaWVudFVS
TCkpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxh
eVRhc2tGb3JJbXBvcnQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3ZvaWQgV2ViU1dD
bGllbnRDb25uZWN0aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydChGdW5jdGlvbjx2b2lkKCk+
JiYgdGFzaykKIHsKICAgICBpZiAobV9zd09yaWdpblRhYmxlLT5pc0ltcG9ydGVkKCkpIHsKICAg
ICAgICAgdGFzaygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fdGFza3NQZW5kaW5n
T3JpZ2luSW1wb3J0LmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKLSAgICBpbml0aWFsaXplQ29ubmVj
dGlvbklmTmVlZGVkKCk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp3aGVuUmVn
aXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0
IFVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50
aWZpZXI7CiAgICAgbV9vbmdvaW5nUmVnaXN0cmF0aW9uUmVhZHlUYXNrcy5hZGQoY2FsbGJhY2tJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFj
a0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6V2hlblJlZ2lzdHJhdGlvblJlYWR5KGNhbGxiYWNrSUQsIHRvcE9yaWdp
biwgY2xpZW50VVJMKSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3Ry
YXRpb25SZWFkeSh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEpCkBAIC0yMTYsMjkgKzIwMSwzMiBAQCB2
b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9yaWdp
bkRhdGEmJiB0b3BPcmlnaW4sIGNvbgogICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlz
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BPcmlnaW4gPSBXVEZNb3ZlKHRvcE9y
aWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmllcjsKICAgICAgICAgbV9vbmdvaW5nR2V0
UmVnaXN0cmF0aW9uc1Rhc2tzLmFkZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0g
ICAgICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkdldFJlZ2lzdHJhdGlvbnMoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwp
KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdp
c3RyYXRpb25zIHsgY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwgfSk7CiAgICAgfSk7
CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKEZldGNoSWRlbnRp
ZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcikKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWZlcnJlciB9KTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRp
b25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVy
cmVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goRmV0
Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgZW5z
dXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q2Fu
Y2VsRmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVu
dGlmaWVyIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q2Fu
Y2VsRmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVu
dGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGludWVEaWRS
ZWNlaXZlRmV0Y2hSZXNwb25zZShGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcikKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UgeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0
Y2hJZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVj
dGlvblRvU2VydmVyTG9zdCgpCiB7Ci0gICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICBj
bGVhcigpOworfQogCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y2xlYXIoKQorewogICAg
IGF1dG8gcmVnaXN0cmF0aW9uVGFza3MgPSBXVEZNb3ZlKG1fb25nb2luZ01hdGNoUmVnaXN0cmF0
aW9uVGFza3MpOwogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiByZWdpc3RyYXRpb25UYXNrcy52
YWx1ZXMoKSkKICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKQEAgLTI0NywzMSArMjM1
LDI2IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0
KCkKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogZ2V0UmVnaXN0cmF0aW9uVGFza3MudmFsdWVz
KCkpCiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CiAKKyAgICBhdXRvIHJlZ2lzdHJhdGlvblJlYWR5
VGFza3MgPSBXVEZNb3ZlKG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3MpOworICAgIGZv
ciAoYXV0byYgY2FsbGJhY2sgOiByZWdpc3RyYXRpb25SZWFkeVRhc2tzLnZhbHVlcygpKQorICAg
ICAgICBjYWxsYmFjayh7IH0pOworCiAgICAgY2xlYXJQZW5kaW5nSm9icygpOwogfQogCiB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVk
ZWQoKTsKLQotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5
bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KGlkZW50aWZpZXIpLCBNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudDo6UmVwbHkoKSk7
Ci19Ci0KLVdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjpzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgY29u
c3RfY2FzdDxXZWJTV0NsaWVudENvbm5lY3Rpb24qPih0aGlzKS0+aW5pdGlhbGl6ZUNvbm5lY3Rp
b25JZk5lZWRlZCgpOwotICAgIHJldHVybiBtX2lkZW50aWZpZXI7CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGll
bnQgeyBpZGVudGlmaWVyIH0sIE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNU
ZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50OjpSZXBseSgpKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogewogICAgIG1faXNUaHJvdHRsZWFi
bGUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hcmVBbGxQYWdlc1Rocm90dGxlYWJsZSgpOwot
ICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlNldFRocm90dGxlU3RhdGUgeyBtX2lzVGhyb3R0bGVhYmxlIH0pOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U2V0VGhyb3R0bGVTdGF0ZSB7IG1faXNUaHJv
dHRsZWFibGUgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdG9yZVJlZ2lz
dHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFjaykKIHsKLSAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7CiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0b3JlUmVnaXN0
cmF0aW9uc09uRGlzayB7IH0sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
aAppbmRleCAzYWY0OTVkY2E5NDRkZWRjOTFmNTQzY2JkZDYxMzFiNzAzOWViOTIzLi5lZmVmMzZi
Y2FjZDI4NTQ1N2JlMDE0ZjhkNGNiYzlkYTY5OWMyZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rp
b24+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViU1dDbGllbnRDb25uZWN0aW9uIHsgc2Vzc2lvbklEIH0pOyB9CiAgICAgfldlYlNXQ2xp
ZW50Q29ubmVjdGlvbigpOwogCi0gICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworICAgIFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgYWRk
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcikgZmluYWw7CkBAIC03NCw4ICs3NCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2ViU1dDbGllbnRDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKTsKIAotICAg
IHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwotCiAgICAgdm9pZCBzY2hlZHVs
ZUpvYkluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7
CiAgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UpIGZpbmFsOwpAQCAt
OTcsMjcgKzk1LDI2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFnZUpvYihj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCi0gICAgdm9pZCBydW5PckRl
bGF5VGFza0ZvckltcG9ydChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKTsKKyAgICB2b2lk
IHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKTsKIAotICAg
IElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpOyB9CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQudG9VSW50NjQoKTsgfQogCiAgICAgdm9pZCBz
ZXRTV09yaWdpblRhYmxlU2hhcmVkTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJik7
CiAgICAgdm9pZCBzZXRTV09yaWdpblRhYmxlSXNJbXBvcnRlZCgpOwogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gdm9pZCBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChjb25zdCBVJiBtZXNzYWdl
KTsKKyAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
ICAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IAotICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBVbmlxdWVS
ZWY8V2ViU1dPcmlnaW5UYWJsZT4gbV9zd09yaWdpblRhYmxlOwogCiAgICAgdWludDY0X3QgbV9w
cmV2aW91c0NhbGxiYWNrSWRlbnRpZmllciB7IDAgfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWdpc3RyYXRpb25DYWxsYmFjaz4gbV9vbmdvaW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrczsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2s+IG1fb25nb2luZ0dl
dFJlZ2lzdHJhdGlvbnNUYXNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXaGVuUmVnaXN0cmF0
aW9uUmVhZHlDYWxsYmFjaz4gbV9vbmdvaW5nUmVnaXN0cmF0aW9uUmVhZHlUYXNrczsKLSAgICBE
ZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IG1fdGFza3NQZW5kaW5nT3JpZ2luSW1wb3J0Owor
ICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fdGFza3NQZW5kaW5nT3JpZ2luSW1wb3J0Owog
ICAgIGJvb2wgbV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
MDI4ZGEzMGJlNGEzNjNmNTg3YzYyMWQ0NzA3YmE1NzgyNzRkZmNiNy4uNTY2MjBmNjcyYmQ3Mjdm
Y2ExOTM0ODIzZDA4ZWE5Mzc3MmZmMTdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBAIC04
Niw4ICs4Nyw5IEBAIFJlZjxEb2N1bWVudExvYWRlcj4gU2VydmljZVdvcmtlckZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSCiAgICAgcmV0dXJuIFdlYkRvY3Vt
ZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogfQogCi1XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFi
bGVEb21haW4sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlKQogICAgIDogbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3Zl
KGNvbm5lY3Rpb24pKQorICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihXVEZNb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKSkKICAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdyb3VwSUQpCiAgICAgLCBtX3dl
YlBhZ2VQcm94eUlEKHdlYlBhZ2VQcm94eUlEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAt
OTgsNiArMTAwLDcgQEAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24KICNlbmRpZgogewogICAgIHVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RvcmUpOworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3Rh
Ymxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCAwKTsKIH0K
IAogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbigpID0gZGVmYXVsdDsKQEAgLTI2MCw5ICsyNjMsOSBAQCB2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyCiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2Vy
KGlkZW50aWZpZXIsIHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIFdURk1vdmUocmVwbHkp
KTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIm
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdl
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwg
Y29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewot
ICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50
aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiks
IDApOworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQoc2Vzc2lvbklELCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlk
ZW50aWZpZXIsIHNvdXJjZU9yaWdpbiksIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAxNmNjMGRlZTc1ODg0MGNjODJjNGM0MjhkYjQzOGM0
MmJmOWMzY2JmLi5iNWEyYzY4YWUyMDFlNWFiNzIzYzYzMDMzMzMxOTlmMWU1MmJlMzA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IFdl
YlByZWZlcmVuY2VzU3RvcmU7CiAKIGNsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUdyb3Vw
SUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
dWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgfldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtNjUsNyArNjUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CiAKICAgICAvLyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0
aW9uLgotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4pIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNo
SW5zdGFsbChPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdF
dmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZpbmFsOwpAQCAt
OTksNiArOTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlz
VGhyb3R0bGVhYmxlKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3M7CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3Ry
YWJsZURvbWFpbjsKICAgICB1aW50NjRfdCBtX3BhZ2VHcm91cElEOwogICAgIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgbV93ZWJQYWdlUHJveHlJRDsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0
YWU5Y2FjNDJhYmRkNWJhODQxZDcwMzQwNzY3OWM0YzUxMzk2YjMxLi5kZDBhNjAwYWU1MWIyODY0
YWM2YWJjNjdkMjMwYTViOWViMGMyYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC0xODExLDEzICsxODExLDEzIEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlBy
b2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCit2b2lkIFdl
YlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9u
SUQgaW5pdGlhbFNlc3Npb25JRCkKIHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29y
a2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNv
bm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0
aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBhdXRv
JiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24o
bWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwg
cGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlKSk7CisgICAgU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlKSk7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlYzBmYmUyMmI5ZTMzZmE5MDk1ZmU0
YTViMjYzZGIwMTJjZTA4MjQ5Li5iZTcxMzAxNTg4NDA3OGIzODQ1ZGEyYmMxOWMyOTA1NGUzNzI0
ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM2NSw3ICszNjUs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
dm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWlu
dDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOwor
ICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudHMoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGRjZWUxZjQ3NGM1YTZjZjYxOWExYjg2ZDI4
NTQwMGIwNWRkZTM4NTMuLmY0NDlmNWY0OTc2MjkyY2RmMDZiNTgxZTgxYzJiNDdiNDE5MTIxNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0xMTEsNyArMTExLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3Vw
SUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQorICAgIEVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3Jv
dXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRz
KCkKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378626</attachid>
            <date>2019-09-12 00:00:55 -0700</date>
            <delta_ts>2019-09-13 04:29:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-201459-20190912090048.patch</filename>
            <type>text/plain</type>
            <size>88290</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU3ZWY0ZmEzMTZmMzlk
ZDFhYzhkMmM0NWExMDc2YmYwNjc1MTI4Ny4uMzAwZWNkNTQzODBmYTA2MDVlOTg0NGM5YjI4NjBh
OWMyZjE2ZDk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lvbklEIHRvIGVhc2UgTmV0d29ya1By
b2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2VzcyBjb25uZWN0aW9uLgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaDoKKyAgICAgICAgTWFyayBz
ZXJ2ZXIgY29ubmVjdGlvbiBpZGVudGlmaWVyIGJlIHByb2Nlc3MgaWRlbnRpZmllciBiYXNlZC4K
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICBMZXQgY29ubmVjdGlvbiBp
ZGVudGlmaWVyIGJlIHNldCBpbiBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGdlbmVyYXRlZC4KKwog
MjAxOS0wOS0xMSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TG9nIHRpbWVvdXRWYWx1ZSBwYXNzZWQgb24gdG8gQ0ZOZXR3b3JrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpp
bmRleCBlNzQ2YTY0ZTBjNzYzNjBmZGYyYjkyMDQxYTFjNTE2NTM4ODI3NDY0Li4wMTU2NTdlOTEy
ZmNlZjdhZWUxOTc4ZDNjZDg1ZTU5MDVmNjdlNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxOS0wOS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIFdlYlByb2Nlc3MgcHJvY2Vzc0lkZW50aWZpZXIgdG8gaWRlbnRpZnkg
U2VydmljZSBXb3JrZXIgY29ubmVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTQ1OQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1
bWV6LgorCisgICAgICAgICogcGFsL1Nlc3Npb25JRC5oOgorICAgICAgICAoUEFMOjpTZXNzaW9u
SUQ6OlNlc3Npb25JRCk6CisKIDIwMTktMDktMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEaXNhYmxlIFRMUyAxLjAgYW5kIDEuMSBpbiBX
ZWJTb2NrZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg2ZGI5MDk2ZWIzYzA0NWU1ZDQxYjI5YzliZTAwYTA1ZWQz
M2Y5ODQuLmY4MmUxYjVhMjMzYmE0YjUzODQ2MWFlMjcxYTM2ZWE5NjM5YmVlYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTEwIEBACisyMDE5LTA5LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBwcm9jZXNzSWRlbnRpZmllciB0byBp
ZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2hyaXMgRHVtZXouCisKKyAgICAgICAgTWFrZSBXZWJTV1NlcnZlckNvbm5lY3Rpb24gYmUgc3Rv
cmVkIGluIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICBUaGV5IGFyZSBu
b3cga2V5ZWQgYnkgc2Vzc2lvbiBJRHMgaGVuY2Ugd2h5IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBp
cyB1c2luZyB0aGUgc2Vzc2lvbiBJRCBhcyBtZXNzYWdlIGNvbm5lY3Rpb24gSUQuCisgICAgICAg
IENyZWF0aW9uIG5vIGxvbmdlciByZXF1aXJlcyBhIHN5bmMgSVBDIHNpbmNlIHRoZSBjb25uZWN0
aW9uIGlzIHVuaXF1ZWx5IGlkZW50aWZpZWQgYnkgaXRzIHNlc3Npb24gSUQgYW5kIGl0cyBwcm9j
ZXNzIElELgorICAgICAgICBUaGVzZSBJRHMgYXJlIHN0YWJsZSBvdmVyIG5ldHdvcmsgcHJvY2Vz
cyBjcmFzaC4KKyAgICAgICAgV2l0aGluIE5ldHdvcmtQcm9jZXNzLCBhIHNlcnZlciBjb25uZWN0
aW9uIGlzIG1hbmFnZWQgYnkgYSBTV1NlcnZlciB3aGljaCBpcyBzZXNzaW9uIElEIHNwZWNpZmlj
LgorICAgICAgICBJbiB0aGF0IGNhc2UsIHRoZSBwcm9jZXNzIGlkZW50aWZpZXIgdW5pcXVlbHkg
aWRlbnRpZmllcyB0aGUgY29ubmVjdGlvbi4KKworICAgICAgICBNb3ZlIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiBiZSBvd25lZCBieSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy4KKyAgICAgICAgSW5zdGVhZCBvZiBjcmVhdGluZyBpdCB3aGVuIHdlYnByb2Nlc3MgaXMgY29u
bmVjdGluZyB0byBuZXR3b3JrIHByb2Nlc3MsIHVzZSBhIGRlZGljYXRlZCBJUEMgbWVzc2FnZS4K
KyAgICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBvbmNlIFdl
YlByb2Nlc3MgYXNrcyB0byBjcmVhdGUgaXQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBleGlz
dGluZyBXZWJQcm9jZXNzLCBpbiBjYWNoZSBvciBydW5uaW5nIHBhZ2VzLCB0byBydW4gc2Vydmlj
ZSB3b3JrZXJzIGFzIHdlbGwuCisgICAgICAgIEEgY29udGV4dCBjb25uZWN0aW9uIG1hcCBpcyBr
ZXB0IGluIE5ldHdvcmsgUHJvY2VzcyB0byByZXVzZSBjb250ZXh0IGNvbm5lY3Rpb25zIHNpbmNl
IHRoZXNlIGNvbm5lY3Rpb25zIGFyZSBub3Qgc2Vzc2lvbklEIHNwZWNpZmljLgorCisgICAgICAg
IE1pZ3JhdGUgZnJvbSBhIHNpbmdsZSBib29sZWFuIHRvIGEgSGFzaFNldCB0byB0cmFjayB3aGV0
aGVyIHNvbWUgY29ubmVjdGlvbnMgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGNyZWF0ZWQu
CisgICAgICAgIFByZXZpb3VzbHkgaWYgdHdvIHJlcXVlc3RzIHRvIGNyZWF0ZSBjb25uZWN0aW9u
cyB3ZXJlIGRvbmUgc2hvcnRseSBvbmUgYWZ0ZXIgdGhlIG90aGVyIG9uIGRpZmZlcmVudCByZWdp
c3RyYWJsZQorICAgICAgICBkb21haW5zLCB0aGUgc2Vjb25kIHJlcXVlc3Qgd291bGQgbm90IGJl
IHByb2Nlc3NlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmb3JFYWNoU1dTZXJ2ZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9y
UmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dDb250ZXh0
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVy
U1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVk
ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpz
Y2hlZHVsZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDbGllbnRDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNo
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25Ub1NlcnZlckxvc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rp
b246OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzeW5j
VGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9u
Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV91c2VyQWdlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
CiAyMDE5LTA5LTExICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBMb2cgdGltZW91dFZhbHVlIHBhc3NlZCBvbiB0byBDRk5ldHdvcmsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1Nlc3Npb25JRC5oCmluZGV4IGM3MWQ2YTJiYWVjY2MwMzM0OTc2ZWViMWQzMTE3MmM3MGRlZDRj
Y2IuLmUxNDQzZjBiODA1MWUzYzMwMTNjMjlmZjg4MzllNTA4ZmMyNmNjZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9TZXNzaW9uSUQuaApAQCAtNTUsNiArNTUsMTEgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKKyAgICBleHBsaWNpdCBTZXNzaW9uSUQodWludDY0X3QgaWRlbnRpZmllcikKKyAgICAg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICB7CisgICAgfQorCiAgICAgUEFMX0VY
UE9SVCBzdGF0aWMgU2Vzc2lvbklEIGdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklEKCk7CiAgICAg
UEFMX0VYUE9SVCBzdGF0aWMgU2Vzc2lvbklEIGdlbmVyYXRlUGVyc2lzdGVudFNlc3Npb25JRCgp
OwogICAgIFBBTF9FWFBPUlQgc3RhdGljIHZvaWQgZW5hYmxlR2VuZXJhdGlvblByb3RlY3Rpb24o
KTsKQEAgLTc2LDExICs4MSw2IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgU2Vzc2lvbklEKHVpbnQ2NF90IGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCi0gICAgewotICAgIH0KLQogICAgIHN0YXRpYyBib29sIGlzVmFsaWRTZXNz
aW9uSURWYWx1ZSh1aW50NjRfdCBzZXNzaW9uSUQpIHsgcmV0dXJuIHNlc3Npb25JRCAhPSBIYXNo
VGFibGVFbXB0eVZhbHVlSUQgJiYgc2Vzc2lvbklEICE9IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZUlE
OyB9CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKaW5kZXggNzM5MWM0
YzIxYTM2ZDUwZDc3ZjIwNmQ3YjNlZWJkMDViMDY0MDRlMC4uNzYwYzRjZDBhM2M2ZWVkNzVlOGE4
Njg2NjJlOTVjNDkwNTkwMTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcApAQCAtOTksOSArOTksOSBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29ya2VyQ2xpZW50Ojpwb3N0TWVzc2FnZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZQogCiAgICAgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2Fn
ZSA9IHsgbWVzc2FnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCksIHBvcnRzT3JFeGNlcHRpb24u
cmVsZWFzZVJldHVyblZhbHVlKCkgfTsKICAgICBhdXRvIHNvdXJjZUlkZW50aWZpZXIgPSBkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLmlkZW50aWZp
ZXIoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwg
ZGVzdGluYXRpb25JZGVudGlmaWVyID0gaWRlbnRpZmllcigpLCBzb3VyY2VJZGVudGlmaWVyLCBz
b3VyY2VPcmlnaW4gPSBjb250ZXh0Lm9yaWdpbigpLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxl
IHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBjb250ZXh0LnNlc3Npb25JRCgp
LCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JZGVudGlmaWVyID0gaWRl
bnRpZmllcigpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gPSBjb250ZXh0Lm9yaWdp
bigpLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5l
Y3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAg
ICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0
aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNv
dXJjZU9yaWdpbik7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChzZXNzaW9uSUQsIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSwg
c291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKICAgICB9KTsKIAogICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clR5cGVzLmgKaW5kZXggZjAyOGQyNGI0NmUzYmFlMGI2NmNmMjI3MTE5YTlkODc3YjIxYzA2Yy4u
ODg2YzVhZDQ5MDIwN2FkYjE3MTNjYmY3MTVmODM0N2I3NmM1MTE2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkRvY3Vt
ZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC03MCw3ICs3MSw3IEBAIHVzaW5n
IFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29y
a2VySm9iSWRlbnRpZmllclR5CiBlbnVtIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXJUeXBlIHsgfTsKIHVzaW5nIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXJUeXBlPjsKIAotZW51bSBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZSA9IFByb2Nlc3NJZGVudGlmaWVy
VHlwZTsKIHVzaW5nIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlm
aWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPjsKIAogdXNpbmcgRG9jdW1lbnRP
cldvcmtlcklkZW50aWZpZXIgPSBWYXJpYW50PERvY3VtZW50SWRlbnRpZmllciwgU2VydmljZVdv
cmtlcklkZW50aWZpZXI+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGZlMGMwODQ5MmMzNTIxN2Ey
MzZlMjMyYzA2YmM1YWI2MzY3ODg2YTEuLmZmZmI3MTFkZTBiMmZkZmI3ZGFhOTFkOTYwZTQ0YTNh
OWY5MTAzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
ICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsgfQogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNl
V29ya2VyU3RhcnRlZChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJGYWlsZWRUb1N0YXJ0KE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaElu
c3RhbGwoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBlMDRkMGIy
YThiNjY5ZmMzZjcwYmU0YTY3YjY3ODNiYzJmMjhlYTBjLi4xMjhkNzJmZWI4ZjQ0ODZmOGNjZjhi
OTU1MDdmYjA5NDAzYTdlZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNTAsOSArNTAsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBTZWNvbmRzIHRlcm1pbmF0aW9uRGVsYXkgeyAxMF9zIH07CiAKLVNX
U2VydmVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKFNXU2VydmVyJiBzZXJ2ZXIpCitTV1NlcnZl
cjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyLCBJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgOiBtX3NlcnZlcihzZXJ2ZXIpCi0gICAgLCBtX2lkZW50aWZpZXIoU1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggMzBlMmFmNWNhZTA0ZDdmZWEzMjg3NDY0MDU3ZTE1
Yzg3NDc2NmNiMy4uNWNjZjJmNDM5OTI5MDFmZjQ2OTY2ZTRiODk3MTdhODMzMWU3YjM0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApA
QCAtNTYsNiArNTYsNyBAQCBjbGFzcyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiBlbnVt
IGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFNlcnZpY2VXb3JrZXJTdGF0ZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsK
K3N0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50UXVlcnlPcHRpb25zOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVj
dCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CkBAIC04Niw2ICs4Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNldFJlZ2lzdHJhdGlvblVwZGF0ZVZpYUNhY2hlKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFu
Z2UoY29uc3QgSGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+JiBjb250ZXh0SWRlbnRpZmllcnMs
IGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBuZXdDb250cm9sbGVyKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RyYXRpb25SZWFkeSh1aW50NjRfdCByZWdpc3RyYXRpb25SZWFkeVJl
cXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1
bWVudElkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYpID0gMDsKIApAQCAtOTMsNyArOTUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNvbnN0IFNXU2VydmVyJiBzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlcjsg
fQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb25u
ZWN0aW9uKFNXU2VydmVyJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIENvbm5lY3Rpb24oU1dT
ZXJ2ZXImLCBJZGVudGlmaWVyKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmlz
aEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7
CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNDEyOGE0YmM5MjdjMGQ2Y2IwYTlhYzA2MGI0NzY0MWU4
MDVlOWIxMi4uYzdlYWI0NDMxZGRjZGEzYTE3ZGYxOTFmMmQ0MDg4MDdlZDVlMjQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTIxMywyMSArMjEzLDIyIEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc3dDb25u
ZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAg
ICAgICAgaWYgKGF1dG8gc3dDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zLmdldChQQUw6OlNl
c3Npb25JRCB7IGRlY29kZXIuZGVzdGluYXRpb25JRCgpIH0pKQogICAgICAgICAgICAgc3dDb25u
ZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3
b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihj
b25uZWN0aW9uKSkgewotICAgICAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRD
b25uZWN0aW9uKTsKKyAgICAgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAg
ICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdv
cmtlckZldGNoVGFzazo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0NvbnRl
eHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKLSAgICAgICAgICAgIGNv
bnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKKyAgICAgICAgQVNTRVJUKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAg
IGlmIChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIG1fc3dDb250ZXh0Q29u
bmVjdGlvbi0+ZGlkUmVjZWl2ZUZldGNoVGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjgsNyArMjY5LDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChh
dXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkpCisgICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5n
ZXQoUEFMOjpTZXNzaW9uSUQgeyBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSB9KSkKICAgICAgICAg
ICAgIHN3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI4NSwxMCArMjg2LDE5IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uPiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+Y29u
bmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewot
ICAgICAgICAvLyBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGV4aXRlZC4KLSAgICAgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgYXV0byYgcmVnaXN0cmFibGVE
b21haW4gPSBtX3N3Q29udGV4dENvbm5lY3Rpb24tPnJlZ2lzdHJhYmxlRG9tYWluKCk7CisKKyAg
ICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7CisKKyAgICAg
ICAgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRDsKKyAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+Zm9yRWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2ZXIpIHsKKyAgICAgICAgICAg
IHNlcnZlci5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJl
Z2lzdHJhYmxlRG9tYWluKTsKKyAgICAgICAgICAgIGlmIChzZXJ2ZXIubmVlZHNTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQor
ICAgICAgICAgICAgICAgIHNlc3Npb25JRCA9IHNlcnZlci5zZXNzaW9uSUQoKTsKKyAgICAgICAg
fSk7CisgICAgICAgIGlmIChzZXNzaW9uSUQpCisgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNz
LT5jcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCAqc2Vz
c2lvbklEKTsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKQEAg
LTg2OCwxOCArODc4LDIzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVu
cmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCkKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vz
cy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0byBjb25uZWN0aW9uID0g
bWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZl
ciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOwotICAgIAotICAgIFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9u
LT5pZGVudGlmaWVyKCk7Ci0gICAgTE9HKFNlcnZpY2VXb3JrZXIsICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIC0gJXMiLCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
YXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0
d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBtX3dlYlByb2Nlc3NJZGVu
dGlmaWVyLCBzZXNzaW9uSUQpOwogCi0gICAgQVNTRVJUKCFtX3N3Q29ubmVjdGlvbnMuY29udGFp
bnMoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKLSAgICBtX3N3Q29ubmVjdGlvbnMuYWRk
KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtYWtlV2Vha1B0cigqY29ubmVjdGlvbikpOwor
ICAgIEFTU0VSVCghbV9zd0Nvbm5lY3Rpb25zLmNvbnRhaW5zKHNlc3Npb25JRCkpOworICAgIG1f
c3dDb25uZWN0aW9ucy5hZGQoc2Vzc2lvbklELCBtYWtlV2Vha1B0cigqY29ubmVjdGlvbikpOwog
ICAgIHNlcnZlci5hZGRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpOwotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKTsKK30KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29u
bmVjdGlvbihSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIG1f
c3dDb250ZXh0Q29ubmVjdGlvbiA9IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3Jl
YXRlKG1fbmV0d29ya1Byb2Nlc3MsIHJlZ2lzdHJhYmxlRG9tYWluLCBtX2Nvbm5lY3Rpb24uZ2V0
KCkpOworCisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Zm9yRWFjaFNXU2VydmVyKFsmXShhdXRvJiBz
ZXJ2ZXIpIHsKKyAgICAgICAgc2VydmVyLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVk
KCptX3N3Q29udGV4dENvbm5lY3Rpb24pOworICAgIH0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAppbmRleCA4OWM5MzE1MTEzYzRiMmU4Yjk5YTVkNDg2MDEyNjQ0ZDIyZGI4
ZjQxLi42NmE2MmYzMjAwNWUyODk4YzU3ZDA5MmQ3NjllYmY1YzRiN2JjNzQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCkBAIC02OCw2ICs2OCw3IEBAIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFu
bmVsOwogY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbTsKIGNsYXNzIFdlYklEQkNvbm5lY3Rpb25U
b0NsaWVudDsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjsKIHR5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRp
ZmllcjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC0yMDgsNyArMjA5LDggQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0
YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYpOworICAg
IHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2
b2lkIGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9ucygpOwogI2VuZGlmCiAKQEAg
LTMxOSw3ICszMjEsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uczsKKyAgICBI
YXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4+IG1f
c3dDb25uZWN0aW9uczsKKyAgICBSZWZQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
PiBtX3N3Q29udGV4dENvbm5lY3Rpb247CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlf
UkVNT1RFX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggYTljNWY2MTgxODYyNGE2OTA1MWRkNzBjZjE5OTAyMzNmZTYwNzJhNS4uOTc4ZjAwMGQ1ODZh
YTMzZTQ3Y2MwNmQyNzk5ZjYyNGM2OTA1MzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04MSw3ICs4MSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIEVzdGFi
bGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgRXN0
YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4pCiAjZW5kaWYKIAogICAgIENyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyIHBvcnQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAwNDc1YjNiY2FmNDJiNGVjYWQ0YzhmOTAxZWNmOTVi
MTA0YTkzY2JiLi5lYzFhYTJkODZkNjAyOWI1NGJlNmU4MThkOWZkMTI2Yjg3ZDljOWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
MjI4LDE3ICsyMjgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlcgogICAgIH0KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7Ci0gICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBpZiAoYXV0byogd2ViU1dDb25uZWN0aW9uID0gY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NG
cm9tSVBDQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgewotICAgICAgICAgICAgd2ViU1dDb25uZWN0
aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgogICAgIGRpZFJlY2VpdmVOZXR3b3Jr
UHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKQEAgLTQyOSw3ICs0MTgs
NyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIsIElQQzo6QXR0YWNobWVudD4+CiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoUHJvY2Vzc0lkZW50aWZp
ZXIgaWRlbnRpZmllciwgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PElQQzo6QXR0YWNobWVudD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBp
cGNDb25uZWN0aW9uID0gY3JlYXRlSVBDQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwogICAgIGlm
ICghaXBjQ29ubmVjdGlvbikgewpAQCAtNDQ2LDI0ICs0MzUsNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmll
ciBpZGVudAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaXBjQ29ubmVjdGlvbi0+c2Vj
b25kKSk7CiAKICAgICBjb25uZWN0aW9uLnNldE9uTGluZVN0YXRlKE5ldHdvcmtTdGF0ZU5vdGlm
aWVyOjpzaW5nbGV0b24oKS5vbkxpbmUoKSk7Ci0gICAgCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7Ci0gICAgICAgIEFTU0VSVChw
YXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpOwotICAgICAgICBBU1NF
UlQobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAg
ICBhdXRvIGNvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpjcmVhdGUoKnRoaXMsIHJlZ2lzdHJhYmxlRG9tYWluLCBjb25uZWN0aW9uLmNvbm5lY3Rpb24o
KSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
cy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIGNvbnRleHRDb25uZWN0aW9uLmNvcHlS
ZWYoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Ci0KLSAgICAgICAgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBmYWxzZTsKLQotICAgICAgICBmb3IgKGF1dG8qIHNlcnZlciA6IFNXU2VydmVyOjph
bGxTZXJ2ZXJzKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25DcmVhdGVkKGNvbnRleHRDb25uZWN0aW9uKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKTsKLSAgICBVTlVTRURfUEFSQU0ocmVnaXN0cmFi
bGVEb21haW4pOwotI2VuZGlmCiAKICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5hZGRDb25uZWN0
aW9uKGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKIH0KQEAgLTI0MDEsMzYgKzIzNzIsMTAgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGUKICNlbmRpZiAvLyBFTkFCTEUoU0FOREJPWF9FWFRFTlNJ
T05TKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKiBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9t
SVBDQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0gICAgZm9yIChh
dXRvJiBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+
aXBjQ29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uZ2V0KCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwot
fQotCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Ns
b3NlZChSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiYmIHNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24pCi17Ci0gICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBzZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLT5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgIAotICAgIHNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAgZm9y
IChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzd1NlcnZl
ci0+bWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChyZWdpc3Ry
YWJsZURvbWFpbik7Ci0gICAgCi0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkgewotICAgICAgICBSRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiQ29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9j
ZXNzIHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKLSAg
ICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbiwg
V1RGOjpudWxsb3B0KTsKLSAgICB9Ci19Ci0KLWJvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmZvckVhY2hTV1NlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFNXU2VydmVyJik+JiBjYWxsYmFj
aykKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1
dG8mIHN3U2VydmVyKSB7Ci0gICAgICAgIHJldHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwot
ICAgIH0pOworICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCisg
ICAgICAgIGNhbGxiYWNrKCpzZXJ2ZXIpOwogfQogCiBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6
OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0yNDU4LDQw
ICsyNDAzLDM2IEBAIFdlYlNXT3JpZ2luU3RvcmUqIE5ldHdvcmtQcm9jZXNzOjpleGlzdGluZ1NX
T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklECiAgICAgcmV0dXJuICZzdGF0aWNf
Y2FzdDxXZWJTV09yaWdpblN0b3JlJj4oc3dTZXJ2ZXItPm9yaWdpblN0b3JlKCkpOwogfQogCiti
b29sIE5ldHdvcmtQcm9jZXNzOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4p
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6YW55T2YobV9zd1NlcnZlcnMudmFsdWVzKCksIFsm
XShhdXRvJiBzd1NlcnZlcikgeworICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICB9KTsKK30KKwogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBOZXR3b3Jr
UHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKICAgICByZXR1cm4g
bV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQocmVnaXN0cmFibGVEb21haW4pOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgT3B0aW9uYWw8UEFMOjpT
ZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKG1fd2FpdGluZ0ZvclNl
cnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKQorICAgIGlmIChtX3BlbmRpbmdDb25uZWN0
aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9
IHRydWU7Ci0gICAgaWYgKHNlc3Npb25JRCkKLSAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKHJlZ2lz
dHJhYmxlRG9tYWluLCAqc2Vzc2lvbklEKSwgMCk7Ci0gICAgZWxzZQotICAgICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpF
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MocmVnaXN0cmFi
bGVEb21haW4pLCAwKTsKLX0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikKLXsKLSAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5l
Y3Rpb25zLmdldChkZXN0aW5hdGlvbklkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChkZXN0aW5hdGlvbklkZW50aWZpZXIuY29udGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2Fn
ZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CisgICAgbV9wZW5kaW5nQ29ubmVj
dGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJsZURvbWFp
biwgc2Vzc2lvbklEIH0sIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5h
dGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UsIFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4pCiB7Ci0gICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5n
ZXQoY29ubmVjdGlvbklkZW50aWZpZXIpKQotICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlcihkZXN0aW5hdGlvbiwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlKTsK
KyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQp
LmNvbm5lY3Rpb24oZGVzdGluYXRpb25JZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQoZGVzdGluYXRpb25JZGVudGlmaWVyLmNvbnRleHRJZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3Nh
Z2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQoKSk7Ci0gICAgQVNTRVJUKCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFp
bnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKLSAgICBtX3N3U2VydmVyQ29ubmVjdGlvbnMu
YWRkKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cihjb25uZWN0aW9uKSk7CiAg
ICAgYXV0byogc3RvcmUgPSBleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKGNvbm5lY3Rp
b24uc2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVChzdG9yZSk7CiAgICAgaWYgKHN0b3JlKQpAQCAt
MjUwMCwyNiArMjQ0MSwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVy
Q29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3RpbwogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIHsKLSAgICBBU1NFUlQobV9zd1NlcnZlckNvbm5lY3Rpb25zLmdl
dChjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkuZ2V0KCkgPT0gJmNvbm5lY3Rpb24pOwotICAgIG1f
c3dTZXJ2ZXJDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpOwogICAg
IGlmIChhdXRvKiBzdG9yZSA9IGV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oY29ubmVj
dGlvbi5zZXNzaW9uSUQoKSkpCiAgICAgICAgIHN0b3JlLT51bnJlZ2lzdGVyU1dTZXJ2ZXJDb25u
ZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzd0NvbnRleHRD
b25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdp
c3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQogewotICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgIGlmIChuZWVkc1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
U2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBp
dCIpOwotICAgIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24udGVybWluYXRlKCk7Ci0gICAgCi0g
ICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBz
d1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JSZWdpc3RyYWJsZURvbWFpbkFzVGVybWluYXRlZChy
ZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgCi0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
b25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5yZW1v
dmUocmVnaXN0cmFibGVEb21haW4pOworICAgIEFTU0VSVCghbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKKyAgICBt
X3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5yZW1vdmUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURv
bWFpbigpKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9u
LnJlZ2lzdHJhYmxlRG9tYWluKCksICZjb25uZWN0aW9uKTsKK30KKwordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX3NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25zLmdldChjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpID09ICZjb25uZWN0
aW9uKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9u
LnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA2MzU1ZGQ5N2Q0MjJjMzc5NDA2
NTFiMTVhMmVmNzEyMzU1ZjI5NzBiLi5iOGRkYzhmNDU4OTE1NjA1MDMyZTIyY2ZlOTA4MjY2YjU2
MDJkMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0yOTgsMTYgKzI5OCwxNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mKTsKLSAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4p
OworICAgIHZvaWQgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICAKICAgICBXZWJDb3Jl
OjpTV1NlcnZlciYgc3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lk
IHJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAg
IHZvaWQgdW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24m
KTsKICAgICAKLSAgICB2b2lkIHN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVk
KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwotICAgIAotICAgIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NGcm9tSVBDQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIGNvbm5lY3Rpb25Ub0NvbnRleHRQ
cm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+JiYpOwor
ICAgIHZvaWQgcmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiYpOworICAgIHZvaWQgdW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisKKyAgICBib29sIG5lZWRzU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJikgY29uc3Q7CisgICAgdm9pZCBmb3JFYWNoU1dTZXJ2ZXIoY29uc3QgRnVu
Y3Rpb248dm9pZChXZWJDb3JlOjpTV1NlcnZlciYpPiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtMzkzLDcgKzM5NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2Fn
ZSBIYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdv
cmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9pZCBjcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYm
KTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2Us
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtNDYyLDEzICs0NjMsMTIgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRDcmVhdGVXb3JrZXJDb250ZXh0
UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAgICAgCi0gICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3Jl
OjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAg
dm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50
aWZpZXImIHNvdXJjZSwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcik7CiAg
ICAgCiAgICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
KCk7CiAgICAgCiAgICAgV2ViU1dPcmlnaW5TdG9yZSogZXhpc3RpbmdTV09yaWdpblN0b3JlRm9y
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7Ci0gICAgYm9vbCBuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCwgU3RyaW5nJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgpAQCAtNTM5LDEyICs1
MzksMTEgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fc3RvcmFnZVRhc2tNdXRleDsKICAgICAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiwgUmVmUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbnM7Ci0gICAgYm9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRl
eHRQcm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKj4gbV9zZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uczsKICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxQQUw6OlNl
c3Npb25JRCwgU3RyaW5nPiBtX3N3RGF0YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBBTDo6U2Vz
c2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+PiBtX3N3U2VydmVyczsK
LSAgICBIYXNoTWFwPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQ
dHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd1NlcnZlckNvbm5lY3Rpb25zOworICAgIEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21h
aW5zOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGMx
MTAyMGYwZTE4NWQ3NDcyZmRhZjNhN2Y1NDBlNDE1OGQyMThkMTMuLmEzZjdlYTMyNjRhZmYwMWQ4
NmNkMDc5MmIxMTc1NTQzM2FlZjJkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKHN0cnVjdCBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBj
b25uZWN0aW9uIGZvciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2Vzc0lkZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4pIC0+IChPcHRpb25hbDxJUEM6OkF0
dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYworICAgIENyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJ
ZGVudGlmaWVyKSAtPiAoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9uSWRlbnRp
ZmllcikgQXN5bmMKIAogI2lmIFVTRShTT1VQKQogICAgIFNldElnbm9yZVRMU0Vycm9ycyhib29s
IGlnbm9yZVRMU0Vycm9ycykKQEAgLTE1MSwxMCArMTUxLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldENhY2hlU3RvcmFnZVBhcmFtZXRlcnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUpOwogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVj
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50
aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcg
c291cmNlT3JpZ2luKQotCi0gICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGll
bnRJZGVudGlmaWVyIHNvdXJjZSwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllcikKLQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAgICAg
RGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpCiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2YmNiOTlhMTAwZjg2
YjY5OWM3NzE1ZDViNWY0NGY4ZWFmNjg1ZmJhLi5kZWFlMmIzOWNiNGI5ZDdhNWUwNWQxZDdkYjEy
MmI1YzdkNGE2NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApA
QCAtNjEsOCArNjEsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgU1dTRVJW
RVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2Vy
LCAiJXAgLSBXZWJTV1NlcnZlckNvbm5lY3Rpb246OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19f
KQogI2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKLVdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgU1dT
ZXJ2ZXImIHNlcnZlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXNzaW9uSUQgc2Vz
c2lvbklEKQotICAgIDogU1dTZXJ2ZXI6OkNvbm5lY3Rpb24oc2VydmVyKQorV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBTV1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBy
b2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQor
ICAgIDogU1dTZXJ2ZXI6OkNvbm5lY3Rpb24oc2VydmVyLCBwcm9jZXNzSWRlbnRpZmllcikKICAg
ICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fY29udGVudENvbm5lY3Rpb24oY29u
bmVjdGlvbikKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCkBAIC0yNTMs
MTMgKzI1MywxMyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNl
cnZlcihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCiAgICAgc2VydmVyKCkuc2NoZWR1
bGVKb2IoV1RGTW92ZShqb2JEYXRhKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVz
dGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNz
YWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250
ZXh0SWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKQogewogICAgIGF1dG8qIHNvdXJjZVNlcnZpY2VXb3JrZXIgPSBzZXJ2ZXIoKS53
b3JrZXJCeUlEKHNvdXJjZUlkZW50aWZpZXIpOwogICAgIGlmICghc291cmNlU2VydmljZVdvcmtl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCB7IGRlc3RpbmF0aW9uQ29u
dGV4dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZVNlcnZpY2VXb3JrZXItPmRh
dGEoKSwgc291cmNlT3JpZ2luIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvbkNv
bnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VTZXJ2aWNlV29ya2VyLT5kYXRhKCksIHNv
dXJjZU9yaWdpbiB9KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246Om1hdGNoUmVn
aXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCA5MDAyM2Q2NjE4NGZkMmQx
ODcxZDQ0ODk2MTdhMGY5ZjY3MmEwMjhiLi5hZGU4ZTdlM2E2MzBjNjE1MGI5MWFhOWFiMjAzMDY2
NTU2OWM3NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC01Myw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFz
cyBXZWJTV1NlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNz
JiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCk7
CisgICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6U1dT
ZXJ2ZXImLCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFM
OjpTZXNzaW9uSUQpOwogICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihjb25zdCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24mKSA9IGRlbGV0ZTsKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmlu
YWw7CiAKQEAgLTY0LDkgKzY1LDYgQEAgcHVibGljOgogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAotICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZVNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0gICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
ZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKTsKLQogcHJpdmF0
ZToKICAgICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRo
ZSBjbGllbnQgV2ViUHJvY2VzcykKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRh
JikgZmluYWw7CkBAIC05NCw2ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciYpOwogICAgIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXImJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6
RG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKSBmaW5hbDsKKwogICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJikgZmluYWw7CiAKICAg
ICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlYWJsZTsg
fQpAQCAtMTAyLDggKzEwMiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0
ZShib29sIGlzVGhyb3R0bGVhYmxlKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsK
IAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNv
dXJjZSk7CisKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsgfQotICAgIHVp
bnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
aWRlbnRpZmllcigpLnRvVUludDY0KCk7IH0KKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7
IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCBzZW5kVG9Db250
ZXh0UHJvY2VzcyhXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBVJiYgbWVz
c2FnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKaW5kZXggYmZlNDAzZGY1ZWJhMjg5NDY5NzU3YzMwNDgxODE0ZGU2YjVhNzMzMC4u
N2IxZTkyMDcxMDljZDE0NTA3NmI5YWE3MjAwOTk1MTE5ZjM4YmVlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTI5LDExICsy
OSwxMyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkZvcm1EYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw5
ICs0NiwxMyBAQCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbgogICAgICwgbV9pcGNDb25uZWN0aW9u
KFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9j
ZXNzKQogeworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlv
bigqdGhpcyk7CiB9CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKK1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCit7CisgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+dW5yZWdpc3RlclNXQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOworfQog
CiBJUEM6OkNvbm5lY3Rpb24qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogewpAQCAtNjUsNiArNzEsMTIgQEAgdm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQoKQogICAgICAgICBm
ZXRjaC0+ZmFpbChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
eyB9LCAiU2VydmljZSBXb3JrZXIgY29udGV4dCBjbG9zZWQiX3MgfSk7CiB9CiAKK3ZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvbm5l
Y3Rpb24oZGVzdGluYXRpb25JZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkK
KyAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVz
dGluYXRpb25JZGVudGlmaWVyLmNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVu
dGlmaWVyLCBzb3VyY2VPcmlnaW4pOworfQorCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYgZGF0YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIgeyBkYXRhLCBzZXNzaW9uSUQsIHVzZXJBZ2Vu
dCB9KTsKQEAgLTExNyw3ICsxMjksMTcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5l
ZWRlZCgpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+c3dDb250ZXh0Q29ubmVjdGlvbk1heU5v
TG9uZ2VyQmVOZWVkZWQoKnRoaXMpOworICAgIGlmIChtX25ldHdvcmtQcm9jZXNzLT5uZWVkc1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURv
bWFpbigpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVybWluYXRp
bmcgaXQiKTsKKyAgICB0ZXJtaW5hdGUoKTsKKworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmZvckVh
Y2hTV1NlcnZlcihbJl0oYXV0byYgc2VydmVyKSB7CisgICAgICAgIHNlcnZlci5tYXJrQWxsV29y
a2Vyc0ZvclJlZ2lzdHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKCkp
OworICAgIH0pOworCisgICAgY29ubmVjdGlvbkNsb3NlZCgpOwogfQogCiB2b2lkIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVh
YmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDkwYTA3ZWEyNGJiYWQzMzc1NjdhNGJlYTM3MjI1ZjM4MjIxMWFhNWIuLjIwZWMxNWU2
YmY5OWY4ZWQ2OTJkMGJjMmI5ZDJkYTVkMGU3ZjhjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEZldGNoT3B0aW9uczsKK3N0cnVjdCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0czsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtODIsNiArODMs
OCBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisKICAgICAvLyBNZXNzYWdl
cyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNzCiAgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtl
ckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KSBmaW5hbDsKICAgICB2b2lkIGZpcmVJ
bnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KaW5kZXggOTk0OWUzZDQzNWYyNDdiNTBiZmQ0NDRkNTA2ZGUyYTk1MjdkYzUy
ZC4uZTMxNThmYzkwYjM1NzRlNGI4NjBiZDI0MWMyN2ExYjA0MjZlYjgzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0zNiw2ICszNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiB7CiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9w
dGlvbnMpOwogICAgIENsYWltKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAg
ICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VVUkwsIFN0
cmluZyBtaW1lVHlwZSk7CisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2Us
IFN0cmluZyBzb3VyY2VPcmlnaW4pCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMTE0NmJmNjFjZjczZjhkMDJkMzY2ZjQ2NzRmNWY1Nzlj
YzVhMTg3Li41MWIzZTkwODA2NmU1ZjhjNDFlZDgwMWY2MWFlOWIxMDE3ZGY0ODVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKQEAgLTE0MiwxNiArMTQyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXMKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKHVp
bnQ2NF90IGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHkpCiB7Ci0gICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7
Ci0gICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW47Ci0jaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIGlmICh3ZWJQcm9jZXNzUHJveHkuaXNSdW5uaW5nU2VydmljZVdv
cmtlcnMoKSkgewotICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKLSAgICAg
ICAgcmVnaXN0cmFibGVEb21haW4gPSB3ZWJQcm9jZXNzUHJveHkucmVnaXN0cmFibGVEb21haW4o
KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIGlzU2Vydmlj
ZVdvcmtlclByb2Nlc3MsIHJlZ2lzdHJhYmxlRG9tYWluIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNz
UHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRl
bnRpZmllcikgbXV0YWJsZSB7CisgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2ViUHJvY2Vzc1Byb3h5ID0gbWFrZVdlYWtQ
dHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlvblJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYg
Y29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjA5LDEyICsxMjAwLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbikKLXsKLSAg
ICBtX3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIFdURjo6bnVsbG9wdCk7
Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBtX3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksIHNlc3Npb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDgwZGZlNjBhMjQ4NDQz
ZGQ5NWQxYmU5MGE5ZjE0MWJjMWJiYzFiYzkuLjg4ZGE3YzA0ZjY2MmM4N2FiODMzNDkyZGI4ODkw
OTY3N2M0NjM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yMzgsOCArMjM4LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYpOwotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzRm9yRXhwbGljaXRTZXNzaW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6
OlNlc3Npb25JRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEs
IHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGU0YWZlNGI1YjcxYWY2YjdkMzQ1ZjU2YjBjZjFjMTNhZGRm
NjNlNWEuLmE2ZGJiN2M1YzkzNjMzYzIxNDRmZWQ5ZGY5NjY5ZjNiZjUzYWY2MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYxLDggKzYxLDcgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4p
Ci0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzRm9y
RXhwbGljaXRTZXNzaW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9t
YWluLCBQQUw6OlNlc3Npb25JRCBleHBsaWNpdFNlc3Npb24pCisgICAgRXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAjZW5kaWYK
IAogICAgIFJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoT3B0aW9uYWw8dWludDY0
X3Q+IG5ld1F1b3RhKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCmluZGV4IDZiYjU2YTQxMjA3OWRlMGZjMjZmOTA0N2M5NDY2MjEyNDE1NzQ2YTguLjZl
YzgzZThmNjgxYmZjOTYzMzMxYThiZjU5OTc4ZTVmNjIxNDc3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTY4NywxOCArNjg3LDEzIEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJv
eHkmIHdlYlByb2Nlc3NQcm94CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4sIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYgcHJveHksIFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHByb3h5LCAmcHJveHkgPT0gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSk7CiAK
LSAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VX
b3JrZXJzLmNsZWFyKCk7CiAKLSAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3Jl
ID0gbnVsbHB0cjsKLSAgICBpZiAoc2Vzc2lvbklEKQotICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
ID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lv
bklEKCpzZXNzaW9uSUQpOworICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0
YVN0b3JlOjpleGlzdGluZ05vbkRlZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklE
KTsKIAogICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0
ZURhdGFTdG9yZSkKQEAgLTcwNiw2ICs3MDEsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Bybwog
ICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpOwogICAgIH0KIAorICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29u
dGFpbnMocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSkKICAgICAgICAgc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzIHsg
fSk7CiAKQEAgLTcxOCw3ICs3MTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgIGF1
dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHIgPSBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LnB0cigpOwogICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKHNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkpKTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHItPmVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gbV9z
ZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IG1fZGVmYXVsdFBhZ2VHcm91cC0+cHJl
ZmVyZW5jZXMoKS5zdG9yZSgpLCBzZXNzaW9uSUQudmFsdWVPcihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKSk7CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eVB0ci0+ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQobV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBt
X3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogbV9kZWZhdWx0UGFnZUdyb3VwLT5w
cmVmZXJlbmNlcygpLnN0b3JlKCkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50
LmlzTnVsbCgpKQogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5zZXRTZXJ2
aWNlV29ya2VyVXNlckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA3YjM1NzdmOWI2ZDVlMmFkYWJi
MDM2OWZlNmJkMTViYjI5NzlmZDVmLi44YTE4N2NlYTU4ZDcwN2RlYmY4ZGM0YTgxZjI0MzIxYjgx
OWU4NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM4
MSw3ICszODEsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChX
ZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIE9w
dGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICBjb25zdCBIYXNoTWFw
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdv
cmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0K
ICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29s
IGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFs
bG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2Vy
KCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3Jr
ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDQ5N2E0OTI5NWIxZTRmZWViYjM0ZGU1NWFhODFiYmI1YTg3ZTg4NmMuLjllMDZiMjExOWQ4MzAx
MDc4MDlmM2Y0ZTQ0NDQ0NWE1ODE3MTExYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ5Myw5ICsxNDkzLDkgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1By
b3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVm
YXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5z
ZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgc2Vzc2lvbklEIH0sIDApOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElE
KCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQs
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwg
Km1fcmVnaXN0cmFibGVEb21haW4sIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkgfSwg
MCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCA3N2Y3ZWVlY2I4MjlkN2Q1MzU3ODk4MWE1MjM2MGQ3YWQ5ZTYzOGY4
Li5iN2YxMGI2NTc3YjRlMjhjN2EyYmYyMGJkNjNkYjRiNmY1YTE2ZmZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMzEzLDggKzMxMyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlcmVmKCkgZmluYWwgeyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWYo
KTsgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lv
bklEKTsKLSAgICB2b2lkIHN0YXJ0Rm9yU2VydmljZVdvcmtlcnMoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2b2lkIHNldFNlcnZp
Y2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNl
V29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAg
Ym9vbCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZVByb3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5
SUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0OWNhZGE2Y2NmNDUzM2FmNzUx
N2M2NDBlZDBkMmU2MGQ2OTA1ZWUuLjg3ODAwNmVkOTUzMTIwMDQzY2E5ZjA5M2VhYWRlYzcwNmMz
NGIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NsaWVu
dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBhdXRvIHNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmdldChtYWtl
T2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCkpKTsKKyAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyQ29ubmVjdGlv
biA9IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5nZXQoUEFMOjpTZXNzaW9uSUQgeyBkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSB9KTsKICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJDb25uZWN0aW9u
KQogICAgICAgICAgICAgc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CkBAIC0yMDAsNyArMjAwLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBhdXRvIHN3Q29u
bmVjdGlvbnMgPSBzdGQ6OmV4Y2hhbmdlKG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllciwgeyB9
KTsKKyAgICBhdXRvIHN3Q29ubmVjdGlvbnMgPSBzdGQ6OmV4Y2hhbmdlKG1fc3dDb25uZWN0aW9u
c0J5U2Vzc2lvbiwgeyB9KTsKICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBzd0Nvbm5lY3Rp
b25zLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uVG9TZXJ2ZXJMb3N0
KCk7CiAjZW5kaWYKQEAgLTI2NCwyNSArMjY0LDYgQEAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2kK
ICAgICAgICAgcmV0dXJuIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y3JlYXRlKHNlc3Npb25JRCk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQotCi12b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6cmVtb3ZlU1dDbGllbnRDb25uZWN0aW9uKFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKLXsKLSAgICBBU1NFUlQobV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmNvbnRh
aW5zKGNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSkpOwotICAgIG1fc3dD
b25uZWN0aW9uc0J5SWRlbnRpZmllci5yZW1vdmUoY29ubmVjdGlvbi5zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcigpKTsKLX0KLQotU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmluaXRpYWxpemVTV0NsaWVudENvbm5lY3Rpb24oV2ViU1dDbGll
bnRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIEFTU0VSVChjb25uZWN0aW9uLnNlc3Np
b25JRCgpLmlzVmFsaWQoKSk7Ci0gICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyOwotICAgIGJvb2wgcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXU2VydmVyQ29ubmVj
dGlvbihjb25uZWN0aW9uLnNlc3Npb25JRCgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb246OlJlcGx5KGlkZW50aWZp
ZXIpLCAwKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLQotICAgIEFTU0VS
VCghbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAg
ICBtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIuYWRkKGlkZW50aWZpZXIsICZjb25uZWN0aW9u
KTsKLQotICAgIHJldHVybiBpZGVudGlmaWVyOwotfQogI2VuZGlmCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjptZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBtZXNzYWdlUG9ydElkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oCmluZGV4IGNmM2VkZTE0MTAxOTE5MTM0YTJiZDA4MWEyZGRkMDIxZGU3YTU1NDMu
LjJiNGVhMWE3OTRkYWU5M2U4M2I4MTQ1YTUwMWI4Y2EzMzQyYWRiOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oCkBAIC03OCw5ICs3OCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgV2ViU1dDbGllbnRDb25uZWN0aW9uKiBleGlzdGluZ1NlcnZpY2VXb3JrZXJD
b25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIHsgcmV0dXJuIG1f
c3dDb25uZWN0aW9uc0J5U2Vzc2lvbi5nZXQoc2Vzc2lvbklEKTsgfQogICAgIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEKTsKLQotICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaW5pdGlh
bGl6ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKLSAgICB2b2lk
IHJlbW92ZVNXQ2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mKTsKICNlbmRp
ZgogCiBwcml2YXRlOgpAQCAtMTEzLDcgKzExMCw2IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYlNX
Q2xpZW50Q29ubmVjdGlvbj4+IG1fc3dDb25uZWN0aW9uc0J5U2Vzc2lvbjsKLSAgICBIYXNoTWFw
PFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbio+IG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllcjsKICNlbmRpZgogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKaW5kZXggZTc1ZWVmYWQxNTQ3M2E3MGFjZWRiYTgyNjMzYjA1NDQ1MDFhMjJj
MC4uYThhYTY3OTYyMjkyYWE4YTIzY2ZhNjY4YjlmNjdmNWQzNDc0NzcwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5l
Y3Rpb24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCkBAIC00MCw2
ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5UYWJsZS5oIgogI2luY2x1ZGUgIldlYlNX
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CkBA
IC01NSw3NyArNTcsNjEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6V2ViU1dDbGllbnRDb25uZWN0aW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiAg
ICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX2lkZW50aWZpZXIoUHJvY2Vzczo6
aWRlbnRpZmllcigpKQogICAgICwgbV9zd09yaWdpblRhYmxlKG1ha2VVbmlxdWVSZWY8V2ViU1dP
cmlnaW5UYWJsZT4oKSkKIHsKICAgICBBU1NFUlQobV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAg
ICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbiB7
IHNlc3Npb25JRCB9KTsKIH0KIAogV2ViU1dDbGllbnRDb25uZWN0aW9uOjp+V2ViU1dDbGllbnRD
b25uZWN0aW9uKCkKIHsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVTV0Ns
aWVudENvbm5lY3Rpb24oKnRoaXMpOworICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgV2ViU1dDbGll
bnRDb25uZWN0aW9uOjppbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCkKK0lQQzo6Q29ubmVj
dGlvbiogV2ViU1dDbGllbnRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0
byYgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7Ci0KLSAgICBtX2Nvbm5lY3Rpb24gPSAmbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKLSAgICBtX2lkZW50aWZpZXIgPSBu
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaW5pdGlhbGl6ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhp
cyk7Ci0KLSAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFU+Ci12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQo
Y29uc3QgVSYgbWVzc2FnZSkKLXsKLSAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7
Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgc2VuZChtZXNzYWdlKTsKKyAgICByZXR1
cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVk
dWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCiB7Ci0g
ICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6U2NoZWR1bGVKb2JJblNlcnZlcihqb2JEYXRhKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpvYkluU2VydmVyIHsgam9iRGF0YSB9KTsKIH0K
IAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2
ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiB7Ci0gICAgZW5zdXJl
Q29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNo
RmV0Y2hpbmdTY3JpcHRJblNlcnZlcihyZXN1bHQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OkZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIgeyByZXN1bHQg
fSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoaWRl
bnRpZmllcikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6QWRk
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyIHsgaWRlbnRpZmllciB9KTsKIH0KIAog
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlm
aWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpSZW1vdmVT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIgeyBpZGVudGlmaWVyIH0pOwogfQogCiB2
b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZp
ZXImIHNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlciB7IGRlc3RpbmF0aW9u
SWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSB9LCAwKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyIH0pOwogfQogCiB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnREYXRhJiBkYXRhLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGVuc3VyZUNvbm5l
Y3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudCB7IHRvcE9yaWdpbi5kYXRhKCksIGRhdGEsIGNvbnRyb2xsaW5nU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHVzZXJBZ2VudCB9KTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudCB7IHRvcE9yaWdpbi5kYXRhKCksIGRhdGEsIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIHVzZXJBZ2VudCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRp
ZmllciBjb250ZXh0SWRlbnRpZmllcikKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudCB7IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHsgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIoKSwgY29udGV4dElkZW50aWZpZXIgfSB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OlVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigp
LCBjb250ZXh0SWRlbnRpZmllciB9IH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYga2V5KQogewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGtl
eSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RGlkUmVzb2x2
ZVJlZ2lzdHJhdGlvblByb21pc2UgeyBrZXkgfSk7CiB9CiAKIGJvb2wgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjptYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pIGNvbnN0CkBAIC0xNzYsMjUgKzE2MiwyNCBAQCB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5E
YXRhJiYgdG9wT3JpZ2luLCBjbwogICAgIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0b3BPcmlnaW4gPSBXVEZNb3ZlKHRvcE9yaWdp
biksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9
ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmllcjsKICAgICAgICAgbV9vbmdvaW5nTWF0Y2hS
ZWdpc3RyYXRpb25UYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAg
ICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpNYXRjaFJlZ2lzdHJhdGlvbihjYWxsYmFja0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkp
OworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVn
aXN0cmF0aW9uKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpydW5PckRlbGF5VGFza0ZvckltcG9ydChX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAg
IGlmIChtX3N3T3JpZ2luVGFibGUtPmlzSW1wb3J0ZWQoKSkgewogICAgICAgICB0YXNrKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV90YXNrc1BlbmRpbmdPcmlnaW5JbXBvcnQuYXBw
ZW5kKFdURk1vdmUodGFzaykpOwotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsK
IH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkws
IFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmllcjsKICAgICBtX29u
Z29pbmdSZWdpc3RyYXRpb25SZWFkeVRhc2tzLmFkZChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6V2hlblJlZ2lzdHJhdGlvblJlYWR5KGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwg
Y2xpZW50VVJMKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpX
aGVuUmVnaXN0cmF0aW9uUmVhZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsK
IH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2
NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYg
cmVnaXN0cmF0aW9uRGF0YSkKQEAgLTIxNiwyOSArMjAxLDMyIEBAIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdp
biwgY29uCiAgICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIHRvcE9yaWdpbiA9IFdURk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJM
XSgpIG11dGFibGUgewogICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3Vz
Q2FsbGJhY2tJZGVudGlmaWVyOwogICAgICAgICBtX29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFz
a3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICAgICAgZW5zdXJlQ29u
bmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6R2V0UmVnaXN0
cmF0aW9ucyhjYWxsYmFja0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkdldFJlZ2lzdHJhdGlvbnMgeyBjYWxs
YmFja0lELCB0b3BPcmlnaW4sIGNsaWVudFVSTCB9KTsKICAgICB9KTsKIH0KIAogdm9pZCBXZWJT
V0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewotICAg
IGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OlN0YXJ0RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJ
ZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVx
dWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyIH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIgfSk7CiB9CiAKIHZv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0
Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5k
U2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfSk7CiB9CiAK
IHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3Bv
bnNlKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogewot
ICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0pOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfSk7
CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0
KCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgIGNsZWFyKCk7Cit9CiAKK3Zv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjbGVhcigpCit7CiAgICAgYXV0byByZWdpc3RyYXRp
b25UYXNrcyA9IFdURk1vdmUobV9vbmdvaW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrcyk7CiAgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IHJlZ2lzdHJhdGlvblRhc2tzLnZhbHVlcygpKQogICAgICAg
ICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOwpAQCAtMjQ3LDMxICsyMzUsMjYgQEAgdm9pZCBXZWJT
V0NsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogICAgIGZvciAoYXV0
byYgY2FsbGJhY2sgOiBnZXRSZWdpc3RyYXRpb25UYXNrcy52YWx1ZXMoKSkKICAgICAgICAgY2Fs
bGJhY2soeyB9KTsKIAorICAgIGF1dG8gcmVnaXN0cmF0aW9uUmVhZHlUYXNrcyA9IFdURk1vdmUo
bV9vbmdvaW5nUmVnaXN0cmF0aW9uUmVhZHlUYXNrcyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFj
ayA6IHJlZ2lzdHJhdGlvblJlYWR5VGFza3MudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKHsg
fSk7CisKICAgICBjbGVhclBlbmRpbmdKb2JzKCk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiB7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwotCi0gICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtl
ckZyb21DbGllbnQoaWRlbnRpZmllciksIE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OlN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50OjpSZXBseSgpKTsKLX0KLQotV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBXZWJTV0NsaWVudENvbm5lY3Rpb246OnNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICBjb25zdF9jYXN0PFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbio+KHRoaXMpLT5pbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0g
ICAgcmV0dXJuIG1faWRlbnRpZmllcjsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudCB7IGlkZW50aWZpZXIg
fSwgTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZy
b21DbGllbnQ6OlJlcGx5KCkpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dXBk
YXRlVGhyb3R0bGVTdGF0ZSgpCiB7CiAgICAgbV9pc1Rocm90dGxlYWJsZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCk7Ci0gICAgZW5zdXJlQ29ubmVj
dGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U2V0VGhyb3R0bGVT
dGF0ZSB7IG1faXNUaHJvdHRsZWFibGUgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgbV9pc1Rocm90dGxlYWJsZSB9KTsKIH0K
IAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0Zv
clRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIGlu
aXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RvcmVSZWdpc3RyYXRpb25zT25EaXNrIHsg
fSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDNhZjQ5NWRj
YTk0NGRlZGM5MWY1NDNjYmRkNjEzMWI3MDM5ZWI5MjMuLmVmZWYzNmJjYWNkMjg1NDU3YmUwMTRm
OGQ0Y2JjOWRhNjk5YzJmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4gY3JlYXRlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTV0NsaWVudENv
bm5lY3Rpb24geyBzZXNzaW9uSUQgfSk7IH0KICAgICB+V2ViU1dDbGllbnRDb25uZWN0aW9uKCk7
CiAKLSAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhZGRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklu
U2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSBmaW5h
bDsKQEAgLTc0LDggKzc0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJT
V0NsaWVudENvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQpOwogCi0gICAgdm9pZCBpbml0aWFsaXpl
Q29ubmVjdGlvbklmTmVlZGVkKCk7Ci0KICAgICB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlz
aEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNo
UmVzdWx0JikgZmluYWw7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSkgZmluYWw7CkBAIC05NywyNyArOTUsMjYgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc2NoZWR1bGVTdG9yYWdlSm9iKGNvbnN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhJik7CiAKLSAgICB2b2lkIHJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spOworICAgIHZvaWQgcnVuT3JEZWxheVRhc2tG
b3JJbXBvcnQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spOwogCi0gICAgSVBDOjpDb25uZWN0aW9u
KiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29ubmVj
dGlvbi5nZXQoKTsgfQotICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyLnRvVUludDY0KCk7IH0KKyAgICBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3Nlc3Npb25JRC50b1VJbnQ2NCgpOyB9CiAKICAgICB2b2lkIHNldFNXT3JpZ2luVGFibGVT
aGFyZWRNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmKTsKICAgICB2b2lkIHNldFNX
T3JpZ2luVGFibGVJc0ltcG9ydGVkKCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKGNvbnN0IFUmIG1lc3NhZ2UpOworICAgIHZvaWQgY2xl
YXIoKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIFdlYkNvcmU6OlNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCi0gICAgUmVmUHRyPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFVuaXF1ZVJlZjxXZWJTV09yaWdpblRh
YmxlPiBtX3N3T3JpZ2luVGFibGU7CiAKICAgICB1aW50NjRfdCBtX3ByZXZpb3VzQ2FsbGJhY2tJ
ZGVudGlmaWVyIHsgMCB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhdGlvbkNhbGxi
YWNrPiBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzOwogICAgIEhhc2hNYXA8dWludDY0
X3QsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjaz4gbV9vbmdvaW5nR2V0UmVnaXN0cmF0aW9uc1Rh
c2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNr
PiBtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRhc2tzOwotICAgIERlcXVlPFdURjo6RnVuY3Rp
b248dm9pZCgpPj4gbV90YXNrc1BlbmRpbmdPcmlnaW5JbXBvcnQ7CisgICAgRGVxdWU8RnVuY3Rp
b248dm9pZCgpPj4gbV90YXNrc1BlbmRpbmdPcmlnaW5JbXBvcnQ7CiAgICAgYm9vbCBtX2lzVGhy
b3R0bGVhYmxlIHsgdHJ1ZSB9OwogfTsgLy8gY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCAwMjhkYTMwYmU0YTM2M2Y1
ODdjNjIxZDQ3MDdiYTU3ODI3NGRmY2I3Li41NjYyMGY2NzJiZDcyN2ZjYTE5MzQ4MjNkMDhlYTkz
NzcyZmYxN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZvcm1EYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKQEAgLTg2LDggKzg3LDkgQEAgUmVm
PERvY3VtZW50TG9hZGVyPiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFIKICAgICByZXR1cm4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0
ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlKQorV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgdWludDY0
X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAg
ICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCisg
ICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQogICAg
ICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2Vi
UGFnZVByb3h5SUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC05OCw2ICsxMDAsNyBAQCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24oUmVmPElQQzo6Q29ubmVjdGlvbgogI2VuZGlmCiB7CiAgICAgdXBkYXRlUHJlZmVyZW5jZXNT
dG9yZShzdG9yZSk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENv
bm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIDApOwogfQogCiBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OwpAQCAtMjYwLDkgKzI2Myw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIKICAgICBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgc3lu
Y1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQor
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZSht
ZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKSwgMCk7CisgICAgbV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChzZXNzaW9uSUQs
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNl
T3JpZ2luKSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRp
ZEZpbmlzaEluc3RhbGwoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBq
b2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCmluZGV4IDE2Y2MwZGVlNzU4ODQwY2M4MmM0YzQyOGRiNDM4YzQyYmY5YzNjYmYuLmI1YTJj
NjhhZTIwMWU1YWI3MjNjNjMwMzMzMzE5OWYxZTUyYmUzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaApAQCAtNTMsNyArNTMsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZTsKIAogY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCB1aW50NjRfdCBwYWdlR3Jv
dXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAog
ICAgIC8vIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24uCi0gICAgdm9pZCBw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7CisgICAg
dm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKE9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgZmluYWw7CkBAIC05OSw2ICs5OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwog
CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsK
KyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOwogICAg
IHVpbnQ2NF90IG1fcGFnZUdyb3VwSUQ7CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3dl
YlBhZ2VQcm94eUlEOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRhZTljYWM0MmFiZGQ1YmE4
NDFkNzAzNDA3Njc5YzRjNTEzOTZiMzEuLmRkMGE2MDBhZTUxYjI4NjRhYzZhYmM2N2QyMzBhNWI5
ZWIwYzJiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE4
MTEsMTMgKzE4MTEsMTMgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRD
TmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nl
c3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50
NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwg
UEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VH
cm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lv
bklEKQogewogICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9j
ZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUg
TmV0d29yayBQcm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlp
bmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQogICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
biBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24g
PSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgd2Vi
UGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUpKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBwYWdlR3Jv
dXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUpKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IGVjMGZiZTIyYjllMzNmYTkwOTVmZTRhNWIyNjNkYjAxMmNlMDgy
NDkuLmJlNzEzMDE1ODg0MDc4YjM4NDVkYTJiYzE5YzI5MDU0ZTM3MjRkYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzY1LDcgKzM2NSw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJ
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdy
b3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
UEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygp
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggZGNlZTFmNDc0YzVhNmNmNjE5YTFiODZkMjg1NDAwYjA1ZGRlMzg1My4u
ZjQ0OWY1ZjQ5NzYyOTJjZGYwNmI1ODFlODFjMmI0N2I0MTkxMjE3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTExMSw3ICsxMTEs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6
U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vz
c2lvbklEKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378723</attachid>
            <date>2019-09-13 04:29:21 -0700</date>
            <delta_ts>2019-09-13 05:32:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201459-20190913132909.patch</filename>
            <type>text/plain</type>
            <size>88373</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY5ZTIyNzg2MmY1ZTc5
YzgxM2QwZGRjN2U4ZjBiZGE4M2JmYTQ5NC4uZWE1ZTIyOGJkYmU3MzNjMzY4OGM0OTc0NTI4ZWQ3
YTI1ODZhNTJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA5LTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBw
cm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlmeSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgTm8gb2JzZXJ2YWJs
ZSBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIFBhc3Mgc2Vzc2lvbklEIHRvIGVhc2UgTmV0d29ya1By
b2Nlc3Mgc2VsZWN0aW9uIG9mIHRoZSBjbGllbnQgcHJvY2VzcyBjb25uZWN0aW9uLgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaDoKKyAgICAgICAgTWFyayBz
ZXJ2ZXIgY29ubmVjdGlvbiBpZGVudGlmaWVyIGJlIHByb2Nlc3MgaWRlbnRpZmllciBiYXNlZC4K
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICBMZXQgY29ubmVjdGlvbiBp
ZGVudGlmaWVyIGJlIHNldCBpbiBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGdlbmVyYXRlZC4KKwog
MjAxOS0wOS0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFNWR0xlbmd0aFZhbHVlIHNob3VsZCB1c2UgdHdvIGVudW1zIGZvciAndHlwZScg
YW5kICdtb2RlJyBpbnN0ZWFkIG9mIG9uZSB1bnNpZ25lZCBmb3IgJ3VuaXRzJwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggMzEyNWVmZjM3NjJkMDEyN2I2ZjcwZDRkNzgzZTcxZDc2ZTY3ZWVjYS4uOWI2
MTBlNjU5M2YzZGQ4NTE4NzYwM2RhZDJkOWI0Nzk2YTVmMzNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDktMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBXZWJQcm9jZXNzIHByb2Nlc3NJZGVudGlmaWVyIHRvIGlk
ZW50aWZ5IFNlcnZpY2UgV29ya2VyIGNvbm5lY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE0NTkKKworICAgICAgICBSZXZpZXdlZCBieSBD
aHJpcyBEdW1lei4KKworICAgICAgICAqIHBhbC9TZXNzaW9uSUQuaDoKKyAgICAgICAgKFBBTDo6
U2Vzc2lvbklEOjpTZXNzaW9uSUQpOgorCiAyMDE5LTA5LTEyICBSeWFuIEhhZGRhZCAgPHJ5YW5o
YWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDk4
MDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGFiZjFmNjM1YzQ1Y2I1MDBmMTk0N2RmNzVhZTM0OTlkNDg5YjQ2OTQu
Ljc4NGY0ZTk0OTQyMzk1NmFlMjE4NDQ0YjUzOWFkMjc0NmFiOGU5ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTEwIEBACisyMDE5LTA5LTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgV2ViUHJvY2VzcyBwcm9jZXNzSWRlbnRpZmllciB0byBpZGVudGlm
eSBTZXJ2aWNlIFdvcmtlciBjb25uZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgTWFrZSBXZWJTV1NlcnZlckNvbm5lY3Rpb24gYmUgc3RvcmVkIGlu
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLgorICAgICAgICBUaGV5IGFyZSBub3cga2V5
ZWQgYnkgc2Vzc2lvbiBJRHMgaGVuY2Ugd2h5IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiBpcyB1c2lu
ZyB0aGUgc2Vzc2lvbiBJRCBhcyBtZXNzYWdlIGNvbm5lY3Rpb24gSUQuCisgICAgICAgIENyZWF0
aW9uIG5vIGxvbmdlciByZXF1aXJlcyBhIHN5bmMgSVBDIHNpbmNlIHRoZSBjb25uZWN0aW9uIGlz
IHVuaXF1ZWx5IGlkZW50aWZpZWQgYnkgaXRzIHNlc3Npb24gSUQgYW5kIGl0cyBwcm9jZXNzIElE
LgorICAgICAgICBUaGVzZSBJRHMgYXJlIHN0YWJsZSBvdmVyIG5ldHdvcmsgcHJvY2VzcyBjcmFz
aC4KKyAgICAgICAgV2l0aGluIE5ldHdvcmtQcm9jZXNzLCBhIHNlcnZlciBjb25uZWN0aW9uIGlz
IG1hbmFnZWQgYnkgYSBTV1NlcnZlciB3aGljaCBpcyBzZXNzaW9uIElEIHNwZWNpZmljLgorICAg
ICAgICBJbiB0aGF0IGNhc2UsIHRoZSBwcm9jZXNzIGlkZW50aWZpZXIgdW5pcXVlbHkgaWRlbnRp
ZmllcyB0aGUgY29ubmVjdGlvbi4KKworICAgICAgICBNb3ZlIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiBiZSBvd25lZCBieSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy4KKyAg
ICAgICAgSW5zdGVhZCBvZiBjcmVhdGluZyBpdCB3aGVuIHdlYnByb2Nlc3MgaXMgY29ubmVjdGlu
ZyB0byBuZXR3b3JrIHByb2Nlc3MsIHVzZSBhIGRlZGljYXRlZCBJUEMgbWVzc2FnZS4KKyAgICAg
ICAgVGhpcyBpcyBzaW1pbGFyIHRvIFdlYlNXU2VydmVyQ29ubmVjdGlvbiBvbmNlIFdlYlByb2Nl
c3MgYXNrcyB0byBjcmVhdGUgaXQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyBleGlzdGluZyBX
ZWJQcm9jZXNzLCBpbiBjYWNoZSBvciBydW5uaW5nIHBhZ2VzLCB0byBydW4gc2VydmljZSB3b3Jr
ZXJzIGFzIHdlbGwuCisgICAgICAgIEEgY29udGV4dCBjb25uZWN0aW9uIG1hcCBpcyBrZXB0IGlu
IE5ldHdvcmsgUHJvY2VzcyB0byByZXVzZSBjb250ZXh0IGNvbm5lY3Rpb25zIHNpbmNlIHRoZXNl
IGNvbm5lY3Rpb25zIGFyZSBub3Qgc2Vzc2lvbklEIHNwZWNpZmljLgorCisgICAgICAgIE1pZ3Jh
dGUgZnJvbSBhIHNpbmdsZSBib29sZWFuIHRvIGEgSGFzaFNldCB0byB0cmFjayB3aGV0aGVyIHNv
bWUgY29ubmVjdGlvbnMgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGNyZWF0ZWQuCisgICAg
ICAgIFByZXZpb3VzbHkgaWYgdHdvIHJlcXVlc3RzIHRvIGNyZWF0ZSBjb25uZWN0aW9ucyB3ZXJl
IGRvbmUgc2hvcnRseSBvbmUgYWZ0ZXIgdGhlIG90aGVyIG9uIGRpZmZlcmVudCByZWdpc3RyYWJs
ZQorICAgICAgICBkb21haW5zLCB0aGUgc2Vjb25kIHJlcXVlc3Qgd291bGQgbm90IGJlIHByb2Nl
c3NlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmb3JFYWNoU1dTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3Jl
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb250
ZXh0Q29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpzZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
bGllbnRDb25uZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzY2hlZHVs
ZUpvYkluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpm
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlbW92ZVNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmRpZFJlc29s
dmVSZWdpc3RyYXRpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25u
ZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25U
b1NlcnZlckxvc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmNs
ZWFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpzeW5jVGVybWlu
YXRlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1cGRh
dGVUaHJvdHRsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9u
OjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV91c2VyQWdlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE5
LTA5LTEyICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDk4MDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL1Nlc3Npb25JRC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQu
aAppbmRleCBjNzFkNmEyYmFlY2NjMDMzNDk3NmVlYjFkMzExNzJjNzBkZWQ0Y2NiLi5lMTQ0M2Yw
YjgwNTFlM2MzMDEzYzI5ZmY4ODM5ZTUwOGZjMjZjY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL1Nlc3Npb25JRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vz
c2lvbklELmgKQEAgLTU1LDYgKzU1LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAg
ZXhwbGljaXQgU2Vzc2lvbklEKHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKwogICAgIFBBTF9FWFBPUlQgc3RhdGlj
IFNlc3Npb25JRCBnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwogICAgIFBBTF9FWFBPUlQg
c3RhdGljIFNlc3Npb25JRCBnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKTsKICAgICBQQUxf
RVhQT1JUIHN0YXRpYyB2b2lkIGVuYWJsZUdlbmVyYXRpb25Qcm90ZWN0aW9uKCk7CkBAIC03Niwx
MSArODEsNiBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNlc3Npb25J
RCh1aW50NjRfdCBpZGVudGlmaWVyKQotICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQotICAgIHsKLSAgICB9Ci0KICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU2Vzc2lvbklEVmFsdWUo
dWludDY0X3Qgc2Vzc2lvbklEKSB7IHJldHVybiBzZXNzaW9uSUQgIT0gSGFzaFRhYmxlRW1wdHlW
YWx1ZUlEICYmIHNlc3Npb25JRCAhPSBIYXNoVGFibGVEZWxldGVkVmFsdWVJRDsgfQogCiAgICAg
dWludDY0X3QgbV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmluZGV4IDczOTFjNGMyMWEzNmQ1MGQ3
N2YyMDZkN2IzZWViZDA1YjA2NDA0ZTAuLjc2MGM0Y2QwYTNjNmVlZDc1ZThhODY4NjYyZTk1YzQ5
MDU5MDE2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGUKIAogICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UgPSB7IG1lc3Nh
Z2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwb3J0c09yRXhjZXB0aW9uLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpIH07CiAgICAgYXV0byBzb3VyY2VJZGVudGlmaWVyID0gZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5pZGVudGlmaWVyKCk7Ci0gICAg
Y2FsbE9uTWFpblRocmVhZChbbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9u
SWRlbnRpZmllciA9IGlkZW50aWZpZXIoKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2lu
ID0gY29udGV4dC5vcmlnaW4oKS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0gY29udGV4dC5zZXNzaW9uSUQoKSwgbWVzc2FnZSA9
IFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSWRlbnRpZmllciA9IGlkZW50aWZpZXIoKSwg
c291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gY29udGV4dC5vcmlnaW4oKS5pc29sYXRl
ZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQotICAgICAgICAgICAgY29u
bmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4p
OworICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQoc2Vzc2lvbklELCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50
aWZpZXIsIHNvdXJjZU9yaWdpbik7CiAgICAgfSk7CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oCmlu
ZGV4IGYwMjhkMjRiNDZlM2JhZTBiNjZjZjIyNzExOWE5ZDg3N2IyMWMwNmMuLjg4NmM1YWQ0OTAy
MDdhZGIxNzEzY2JmNzE1ZjgzNDdiNzZjNTExNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJEb2N1bWVudElkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNzSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgpAQCAtNzAsNyArNzEsNyBAQCB1c2luZyBTZXJ2aWNlV29y
a2VySm9iSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlckpvYklkZW50
aWZpZXJUeQogZW51bSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZSB7
IH07CiB1c2luZyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyID0gT2JqZWN0
SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT47CiAK
LWVudW0gU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGUgPSBQcm9jZXNzSWRlbnRpZmllclR5cGU7CiB1c2lu
ZyBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT47CiAKIHVzaW5nIERvY3VtZW50T3JXb3JrZXJJZGVu
dGlmaWVyID0gVmFyaWFudDxEb2N1bWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmZTBjMDg0OTJjMzUyMTdhMjM2ZTIzMmMwNmJj
NWFiNjM2Nzg4NmExLi5mZmZiNzExZGUwYjJmZGZiN2RhYTkxZDk2MGU0NGEzYTlmOTEwM2U5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0
ZWQoT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXI+LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZTA0ZDBiMmE4YjY2OWZjM2Y3
MGJlNGE2N2I2NzgzYmMyZjI4ZWEwYy4uMTI4ZDcyZmViOGY0NDg2ZjhjY2Y4Yjk1NTA3ZmIwOTQw
M2E3ZWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgU2Vjb25kcyB0ZXJtaW5hdGlvbkRlbGF5IHsgMTBfcyB9OwogCi1TV1NlcnZlcjo6Q29u
bmVjdGlvbjo6Q29ubmVjdGlvbihTV1NlcnZlciYgc2VydmVyKQorU1dTZXJ2ZXI6OkNvbm5lY3Rp
b246OkNvbm5lY3Rpb24oU1dTZXJ2ZXImIHNlcnZlciwgSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIDogbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9pZGVudGlmaWVyKFNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oCmluZGV4IDMwZTJhZjVjYWUwNGQ3ZmVhMzI4NzQ2NDA1N2UxNWM4NzQ3NjZjYjMu
LjVjY2YyZjQzOTkyOTAxZmY0Njk2NmU0Yjg5NzE3YTgzMzFlN2IzNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTU2LDYgKzU2
LDcgQEAgY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogZW51bSBjbGFzcyBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBTZXJ2aWNl
V29ya2VyU3RhdGUgOiB1aW50OF90Owogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlckZldGNoUmVzdWx0OwpAQCAtODYsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNvbnN0IEhh
c2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBjb25zdCBTZXJ2
aWNlV29ya2VyRGF0YSYgbmV3Q29udHJvbGxlcikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0SWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJikgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlm
aWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24mKSA9IDA7CiAKQEAgLTkzLDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBjb25z
dCBTV1NlcnZlciYgc2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXI7IH0KIAogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29ubmVjdGlvbihTV1Nl
cnZlciYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVyJiwgSWRl
bnRpZmllcik7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hGZXRjaGluZ1Nj
cmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IDM0MjI0YmVmMTY2MDUyODFkNWQ4ZWM3OTUwOTRmNzBjMjRlOTJhZmIuLmNk
ZDc1ZTYzZDk0NDFkZThhMjE4YTM4Njg5NGYzZGYwOWU3NjU1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC0yMTMsMjEgKzIxMywyMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
bwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN3Q29ubmVjdGlvbiA9IG1f
c3dDb25uZWN0aW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIGlmIChh
dXRvIHN3Q29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9ucy5nZXQoUEFMOjpTZXNzaW9uSUQgeyBk
ZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSB9KSkKICAgICAgICAgICAgIHN3Q29ubmVjdGlvbi0+ZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nlc3Mt
PmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikp
IHsKLSAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgQVNTRVJUKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7
CisgICAgICAgIGlmIChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIG1fc3dD
b250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogY29udGV4dENv
bm5lY3Rpb24gPSBtX25ldHdvcmtQcm9jZXNzLT5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zy
b21JUENDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7Ci0gICAgICAgICAgICBjb250ZXh0Q29ubmVj
dGlvbi0+ZGlkUmVjZWl2ZUZldGNoVGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cisg
ICAgICAgIEFTU0VSVChtX3N3Q29udGV4dENvbm5lY3Rpb24pOworICAgICAgICBpZiAobV9zd0Nv
bnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRp
ZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjY4LDcgKzI2OSw3IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byBzd0Nvbm5l
Y3Rpb24gPSBtX3N3Q29ubmVjdGlvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAg
ICAgICBpZiAoYXV0byBzd0Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbnMuZ2V0KFBBTDo6U2Vz
c2lvbklEIHsgZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkgfSkpCiAgICAgICAgICAgICBzd0Nvbm5l
Y3Rpb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yODUsMTAgKzI4NiwyMCBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICBpZiAoUmVmUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gc2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiA9IG1fbmV0d29ya1Byb2Nlc3MtPmNvbm5lY3Rpb25Ub0Nv
bnRleHRQcm9jZXNzRnJvbUlQQ0Nvbm5lY3Rpb24oY29ubmVjdGlvbikpIHsKLSAgICAgICAgLy8g
U2VydmljZSBXb3JrZXIgcHJvY2VzcyBleGl0ZWQuCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV9zd0Nv
bnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFdURk1vdmUobV9z
d0NvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBj
b25uZWN0aW9uLT5yZWdpc3RyYWJsZURvbWFpbigpOworCisgICAgICAgIGNvbm5lY3Rpb24tPmNv
bm5lY3Rpb25DbG9zZWQoKTsKKworICAgICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vz
c2lvbklEOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5mb3JFYWNoU1dTZXJ2ZXIoWyZdKGF1
dG8mIHNlcnZlcikgeworICAgICAgICAgICAgc2VydmVyLm1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0
cmFibGVEb21haW5Bc1Rlcm1pbmF0ZWQocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICAgICAg
aWYgKHNlcnZlci5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICAgICAgc2Vzc2lvbklEID0gc2Vy
dmVyLnNlc3Npb25JRCgpOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHNlc3Npb25JRCkKKyAg
ICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ocmVnaXN0cmFibGVEb21haW4sICpzZXNzaW9uSUQpOwogICAgIH0KICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGNvbm5lY3Rpb24pOwpAQCAtODYzLDE4ICs4NzQsMjMgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQogICAgIH0K
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2
ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNo
U1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBhdXRv
JiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklE
KTsKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlv
bj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25J
RCk7Ci0gICAgCi0gICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKTsKLSAgICBMT0coU2Vydmlj
ZVdvcmtlciwgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZl
ckNvbm5lY3Rpb24gLSAlcyIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdl
YlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rp
b24uZ2V0KCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIsIHNlc3Npb25JRCk7CiAKLSAgICBBU1NF
UlQoIW1fc3dDb25uZWN0aW9ucy5jb250YWlucyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikp
OwotICAgIG1fc3dDb25uZWN0aW9ucy5hZGQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1h
a2VXZWFrUHRyKCpjb25uZWN0aW9uKSk7CisgICAgQVNTRVJUKCFtX3N3Q29ubmVjdGlvbnMuY29u
dGFpbnMoc2Vzc2lvbklEKSk7CisgICAgbV9zd0Nvbm5lY3Rpb25zLmFkZChzZXNzaW9uSUQsIG1h
a2VXZWFrUHRyKCpjb25uZWN0aW9uKSk7CiAgICAgc2VydmVyLmFkZENvbm5lY3Rpb24oV1RGTW92
ZShjb25uZWN0aW9uKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcikpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4pCit7CisgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjcmVhdGUobV9uZXR3b3JrUHJvY2VzcywgcmVnaXN0cmFi
bGVEb21haW4sIG1fY29ubmVjdGlvbi5nZXQoKSk7CisKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5m
b3JFYWNoU1dTZXJ2ZXIoWyZdKGF1dG8mIHNlcnZlcikgeworICAgICAgICBzZXJ2ZXIuc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKm1fc3dDb250ZXh0Q29ubmVjdGlvbik7CisgICAg
fSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGNlNDJhMjQ1MzAz
YzFmMGZjNGU3NDZkYzRhNmU1OTg3YzkyOTFiYmEuLjM4MGIzZTk3YzBlMTkzZGJiNjA3OWJlYmUz
MTBjZmI5ZjgyM2VhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTY4LDYgKzY4LDcg
QEAgY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiBjbGFzcyBOZXR3b3JrU29ja2V0U3RyZWFt
OwogY2xhc3MgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogdHlwZWRlZiB1
aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogCiBuYW1lc3BhY2UgTmV0d29ya0NhY2hl
IHsKQEAgLTIwNiw3ICsyMDcsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciYmKT4mJik7CisgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rp
b24oUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlv
bihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTV0Nv
bm5lY3Rpb25zKCk7CiAjZW5kaWYKIApAQCAtMzE3LDcgKzMxOSw4IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Pj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFdlYWtQdHI8
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rpb25zOworICAgIFJlZlB0cjxXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc3dDb250ZXh0Q29ubmVjdGlvbjsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0ZmYwNjhjN2Q4ODhjMWViY2I4NTdiNWYxYmI1
YjA3ODUzNGE4ZDFiLi4zMjEyMDcwOTgxZWRmMzJkMTFmZGFjYTRmNWM4MjNkNGZmM2E1YTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTc5LDcgKzc5
LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJs
aXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIpIFN5bmNocm9ub3VzCisgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKICNlbmRpZgogCiAgICAgQ3JlYXRlTmV3TWVz
c2FnZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9y
dDEsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDA0NzVi
M2JjYWY0MmI0ZWNhZDRjOGY5MDFlY2Y5NWIxMDRhOTNjYmIuLmVjMWFhMmQ4NmQ2MDI5YjU0YmU2
ZTgxOGQ5ZmQxMjZiODdkOWM5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMjgsMTcgKzIyOCw2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAg
ICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAg
ICAgICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChhdXRvKiB3ZWJTV0Nvbm5lY3Rpb24gPSBj
b25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7
Ci0gICAgICAgICAgICB3ZWJTV0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotI2Vu
ZGlmCiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKIH0KIApAQCAtNDI5LDcgKzQxOCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8c3Rk
OjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgSVBDOjpBdHRhY2htZW50Pj4KICNl
bmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzU2VydmljZVdv
cmtlclByb2Nlc3MsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlwY0Nvbm5lY3Rpb24gPSBjcmVhdGVJUENDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCk7CiAgICAgaWYgKCFpcGNDb25uZWN0aW9uKSB7CkBAIC00NDYsMjQg
KzQzNSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShpcGNDb25uZWN0aW9uLT5zZWNvbmQpKTsKIAogICAgIGNvbm5lY3Rpb24uc2V0T25M
aW5lU3RhdGUoTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLm9uTGluZSgpKTsKLSAg
ICAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKGlzU2VydmljZVdvcmtlclBy
b2Nlc3MpIHsKLSAgICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQoKSk7Ci0gICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNyZWF0ZSgqdGhpcywgcmVnaXN0cmFibGVEb21h
aW4sIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpKTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWlu
KSwgY29udGV4dENvbm5lY3Rpb24uY29weVJlZigpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAgICAgICBtX3dhaXRpbmdGb3JT
ZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIGZvciAo
YXV0byogc2VydmVyIDogU1dTZXJ2ZXI6OmFsbFNlcnZlcnMoKSkKLSAgICAgICAgICAgIHNlcnZl
ci0+c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoY29udGV4dENvbm5lY3Rpb24pOwot
ICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGlzU2VydmljZVdvcmtlclByb2Nlc3MpOwot
ICAgIFVOVVNFRF9QQVJBTShyZWdpc3RyYWJsZURvbWFpbik7Ci0jZW5kaWYKIAogICAgIG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPmFkZENvbm5lY3Rpb24oY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpOwog
fQpAQCAtMjQwMSwzNiArMjM3MiwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRTYW5kYm94
RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZQogI2VuZGlm
IC8vIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpjb25u
ZWN0aW9uVG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKLXsKLSAgICBmb3IgKGF1dG8mIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24g
OiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24p
Ci0gICAgICAgICAgICByZXR1cm4gc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5nZXQoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5l
Y3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24+JiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKLXsKLSAgICBhdXRvJiByZWdp
c3RyYWJsZURvbWFpbiA9IHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPnJlZ2lzdHJhYmxlRG9t
YWluKCk7Ci0gICAgCi0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNs
b3NlZCgpOwotICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1NlcnZlcnMu
dmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lzdHJhYmxl
RG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBpZiAobmVl
ZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFi
bGVEb21haW4pKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJDb25uZWN0
aW9uIHRvIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2FzIGNsb3NlZCBidXQgaXMgc3RpbGwgbmVl
ZGVkLCByZWxhdW5jaGluZyBpdCIpOwotICAgICAgICBjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXVEY6Om51bGxvcHQpOwotICAgIH0KLX0KLQotYm9v
bCBOZXR3b3JrUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0
cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBj
b25zdAordm9pZCBOZXR3b3JrUHJvY2Vzczo6Zm9yRWFjaFNXU2VydmVyKGNvbnN0IEZ1bmN0aW9u
PHZvaWQoU1dTZXJ2ZXImKT4mIGNhbGxiYWNrKQogewotICAgIHJldHVybiBXVEY6OmFueU9mKG1f
c3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJu
IHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBzZXJ2ZXIg
OiBtX3N3U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soKnNlcnZlcik7CiB9CiAK
IFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKQEAgLTI0NTgsNDAgKzI0MDMsMzYgQEAgV2ViU1dPcmlnaW5TdG9yZSog
TmV0d29ya1Byb2Nlc3M6OmV4aXN0aW5nU1dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNz
aW9uSUQKICAgICByZXR1cm4gJnN0YXRpY19jYXN0PFdlYlNXT3JpZ2luU3RvcmUmPihzd1NlcnZl
ci0+b3JpZ2luU3RvcmUoKSk7CiB9CiAKK2Jvb2wgTmV0d29ya1Byb2Nlc3M6Om5lZWRzU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjphbnlP
ZihtX3N3U2VydmVycy52YWx1ZXMoKSwgWyZdKGF1dG8mIHN3U2VydmVyKSB7CisgICAgICAgIHJl
dHVybiBzd1NlcnZlci0+bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOworICAgIH0pOworfQorCiBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qIE5ldHdvcmtQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluKQogewogICAgIHJldHVybiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmdl
dChyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICBpZiAobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24p
CisgICAgaWYgKG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxl
RG9tYWluKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fd2FpdGluZ0ZvclNlcnZlclRv
Q29udGV4dFByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKLSAgICBpZiAoc2Vzc2lvbklEKQotICAg
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3NGb3JFeHBsaWNpdFNlc3Npb24ocmVnaXN0cmFibGVEb21haW4sICpzZXNzaW9uSUQpLCAwKTsK
LSAgICBlbHNlCi0gICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiksIDApOwotfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQotewotICAgIGlmIChhdXRvIGNv
bm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGRlc3RpbmF0aW9uSWRlbnRpZmll
ci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIGNvbm5lY3Rpb24tPnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5jb250ZXh0
SWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3Jp
Z2luKTsKKyAgICBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21h
aW4pOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElk
ZW50aWZpZXImIHNvdXJjZSwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBpZiAoYXV0byBjb25uZWN0aW9u
ID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAg
ICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKGRlc3RpbmF0aW9uLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2UpOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gc3dT
ZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY29ubmVjdGlvbihkZXN0aW5hdGlvbklkZW50aWZp
ZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5wb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuY29udGV4
dElkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9y
aWdpbik7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0
aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQocGFy
ZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpKTsKLSAgICBBU1NFUlQoIW1f
c3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwot
ICAgIG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIG1h
a2VXZWFrUHRyKGNvbm5lY3Rpb24pKTsKICAgICBhdXRvKiBzdG9yZSA9IGV4aXN0aW5nU1dPcmln
aW5TdG9yZUZvclNlc3Npb24oY29ubmVjdGlvbi5zZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKHN0
b3JlKTsKICAgICBpZiAoc3RvcmUpCkBAIC0yNTAwLDI2ICsyNDQxLDIxIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlv
biYgY29ubmVjdGlvCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNv
bm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIEFTU0VS
VChtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKS5nZXQo
KSA9PSAmY29ubmVjdGlvbik7Ci0gICAgbV9zd1NlcnZlckNvbm5lY3Rpb25zLnJlbW92ZShjb25u
ZWN0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKGF1dG8qIHN0b3JlID0gZXhpc3RpbmdTV09y
aWdpblN0b3JlRm9yU2Vzc2lvbihjb25uZWN0aW9uLnNlc3Npb25JRCgpKSkKICAgICAgICAgc3Rv
cmUtPnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byYgcmVnaXN0
cmFibGVEb21haW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWlu
KCk7Ci0gICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFJF
TEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIG5vIGxv
bmdlciBuZWVkZWQsIHRlcm1pbmF0aW5nIGl0Iik7Ci0gICAgc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi50ZXJtaW5hdGUoKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHN3U2VydmVyIDogbV9zd1Nl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHN3U2VydmVyLT5tYXJrQWxsV29ya2Vyc0ZvclJlZ2lz
dHJhYmxlRG9tYWluQXNUZXJtaW5hdGVkKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICAKLSAgICBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICBtX3NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CisgICAgQVNT
RVJUKCFtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24ucmVn
aXN0cmFibGVEb21haW4oKSkpOworICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zLnJlbW92
ZShjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIG1fc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSwgJmNvbm5lY3Rp
b24pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb250ZXh0Q29ubmVj
dGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAg
QVNTRVJUKG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24ucmVnaXN0
cmFibGVEb21haW4oKSkgPT0gJmNvbm5lY3Rpb24pOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CmluZGV4IDYzNTVkZDk3ZDQyMmMzNzk0MDY1MWIxNWEyZWY3MTIzNTVmMjk3MGIuLmI4ZGRjOGY0
NTg5MTU2MDUwMzJlMjJjZmU5MDgyNjZiNTYwMmQyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI5OCwxNiArMjk4LDE3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24qIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwotICAgIHZvaWQgY3JlYXRlU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7CisgICAgdm9pZCBjcmVhdGVTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgUEFMOjpTZXNz
aW9uSUQpOwogICAgIAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0
aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIAotICAgIHZvaWQgc3dDb250ZXh0Q29u
bmVjdGlvbk1heU5vTG9uZ2VyQmVOZWVkZWQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Jik7Ci0gICAgCi0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9u
VG9Db250ZXh0UHJvY2Vzc0Zyb21JUENDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwotICAg
IHZvaWQgY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoUmVmPFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbj4mJik7CisgICAgdm9pZCByZWdpc3RlclNXQ29udGV4dENvbm5l
Y3Rpb24oV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCB1bnJlZ2lz
dGVyU1dDb250ZXh0Q29ubmVjdGlvbihXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsK
KworICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVE
b21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKKyAgICB2b2lk
IGZvckVhY2hTV1NlcnZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNXU2VydmVyJik+
Jik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zOTMsNyArMzk0LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZl
U3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwotICAgIHZv
aWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OkF0dGFjaG1l
bnQ+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPElQQzo6QXR0YWNobWVudD4mJik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRl
bGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC00NjIs
MTMgKzQ2MywxMiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2
b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0
dGFjaG1lbnQmKTsKICAgICAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGll
bnRJZGVudGlmaWVyJiBzb3VyY2UsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIpOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0
aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
KFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5h
dGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlLCBXZWJDb3JlOjpTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICAKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKICAgICAKICAgICBXZWJTV09yaWdpblN0b3Jl
KiBleGlzdGluZ1NXT3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsK
LSAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9t
YWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAKICAgICB2b2lk
IGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmIHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYpOwogI2VuZGlmCkBAIC01MzksMTIgKzUzOSwxMSBAQCBwcml2YXRlOgogICAgIExvY2sgbV9z
dG9yYWdlVGFza011dGV4OwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBI
YXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBSZWZQdHI8V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPj4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uczsKLSAgICBib29s
IG1fd2FpdGluZ0ZvclNlcnZlclRvQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uIHsgZmFsc2UgfTsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24qPiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zOwogICAgIGJvb2wg
bV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5IHsgZmFs
c2UgfTsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1fc3dEYXRhYmFzZVBh
dGhzOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTV1NlcnZlcj4+IG1fc3dTZXJ2ZXJzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+PiBtX3N3
U2VydmVyQ29ubmVjdGlvbnM7CisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9wZW5kaW5nQ29ubmVjdGlvbkRvbWFpbnM7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYzExMDIwZjBlMTg1ZDc0NzJmZGFmM2E3ZjU0MGU0MTU4
ZDIxOGQxMy4uYTNmN2VhMzI2NGFmZjAxZDg2Y2QwNzkyYjExNzU1NDMzYWVmMmQwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBJbml0aWFsaXplTmV0d29ya1Byb2Nlc3Moc3RydWN0IFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0
aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgYm9vbCBpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbikgLT4gKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50aWZpZXIp
IEFzeW5jCisgICAgQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpIC0+IChPcHRpb25hbDxJUEM6OkF0
dGFjaG1lbnQ+IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBBc3luYwogCiAjaWYgVVNFKFNPVVApCiAg
ICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQpAQCAtMTUxLDEwICsx
NTEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
U2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyBjYWNoZVN0b3JhZ2VEaXJlY3RvcnksIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGhhbmRsZSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgUG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCi0KLSAgICBQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5h
dGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlLCBXZWJDb3JlOjpT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotCisgICAg
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVzdGluYXRp
b25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVz
c2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwg
U3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5KCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDZiY2I5OWExMDBmODZiNjk5Yzc3MTVkNWI1ZjQ0ZjhlYWY2ODVmYmEuLmRl
YWUyYjM5Y2I0YjlkN2E1ZTA1ZDFkN2RiMTIyYjVjN2Q0YTY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC02MSw4ICs2MSw4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogI2RlZmluZSBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFNXU0VSVkVSQ09OTkVDVElPTl9S
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9J
RihtX3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwg
IiVwIC0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
IAotV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0d29ya1By
b2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBTV1NlcnZlciYgc2VydmVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBTV1NlcnZlcjo6Q29ubmVj
dGlvbihzZXJ2ZXIpCitXZWJTV1NlcnZlckNvbm5lY3Rpb246OldlYlNXU2VydmVyQ29ubmVjdGlv
bihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFNXU2VydmVyJiBzZXJ2ZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZp
ZXIsIFNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgOiBTV1NlcnZlcjo6Q29ubmVjdGlvbihzZXJ2
ZXIsIHByb2Nlc3NJZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAg
ICwgbV9jb250ZW50Q29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9uZXR3b3JrUHJvY2Vz
cyhuZXR3b3JrUHJvY2VzcykKQEAgLTI1MywxMyArMjUzLDEzIEBAIHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9i
RGF0YSkKICAgICBzZXJ2ZXIoKS5zY2hlZHVsZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsKIH0KIAot
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KERvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50
SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7CiAgICAgYXV0byogc291cmNl
U2VydmljZVdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoc291cmNlSWRlbnRpZmllcik7CiAg
ICAgaWYgKCFzb3VyY2VTZXJ2aWNlV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50IHsgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdl
KSwgc291cmNlU2VydmljZVdvcmtlci0+ZGF0YSgpLCBzb3VyY2VPcmlnaW4gfSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckNsaWVudCB7IGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJj
ZVNlcnZpY2VXb3JrZXItPmRhdGEoKSwgc291cmNlT3JpZ2luIH0pOwogfQogCiB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3QgcmVnaXN0cmF0aW9u
TWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmln
aW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oCmluZGV4IDkwMDIzZDY2MTg0ZmQyZDE4NzFkNDQ4OTYxN2EwZjlmNjcyYTAyOGIuLmFkZThl
N2UzYTYzMGM2MTUwYjkxYWE5YWIyMDMwNjY1NTY5Yzc3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vz
c2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTUzLDcgKzU0LDcgQEAgY2xh
c3MgTmV0d29ya1Byb2Nlc3M7CiAKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbiA6IHB1Ymxp
YyBXZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRl
ciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpTV1NlcnZlciYsIElQQzo6Q29u
bmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24oTmV0
d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpTV1NlcnZlciYsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uKGNvbnN0IFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpID0gZGVsZXRlOwogICAgIH5X
ZWJTV1NlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIApAQCAtNjQsOSArNjUsNiBAQCBwdWJsaWM6
CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Np
b25JRDsgfQogCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJD
b3JlOjpEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25Db250ZXh0SWRlbnRpZmllciwgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVu
dGlmaWVyJiBzb3VyY2UpOwotCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6
Q29ubmVjdGlvbiAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQg
cmVqZWN0Sm9iSW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTk0LDYgKzkyLDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJik7CiAgICAgdm9pZCBzeW5jVGVybWlu
YXRlV29ya2VyRnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRpb25D
b250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOworCiAgICAgdm9pZCBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mKSBmaW5hbDsKIAogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCB7
IHJldHVybiBtX2lzVGhyb3R0bGVhYmxlOyB9CkBAIC0xMDIsOCArMTAyLDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwogICAgIHZv
aWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKTsKKwogICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRD
b25uZWN0aW9uLnB0cigpOyB9Ci0gICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpZGVudGlmaWVyKCkudG9VSW50NjQoKTsgfQorICAg
IHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9zZXNzaW9uSUQudG9VSW50NjQoKTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHN0YXRpYyB2b2lkIHNlbmRUb0NvbnRleHRQcm9jZXNzKFdlYkNvcmU6OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYsIFUmJiBtZXNzYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiZmU0MDNkZjVlYmEyODk0
Njk3NTdjMzA0ODE4MTRkZTZiNWE3MzMwLi43YjFlOTIwNzEwOWNkMTQ1MDc2YjlhYTcyMDA5OTUx
MTlmMzhiZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcApAQCAtMjksMTEgKzI5LDEzIEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDkgKzQ2LDEzIEBAIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNz
JiBuCiAgICAgLCBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1f
bmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCiB7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cmVnaXN0ZXJTV0NvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAotV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkgPSBkZWZh
dWx0OworV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKCkKK3sKKyAgICBtX25ldHdvcmtQcm9jZXNzLT51bnJlZ2lzdGVyU1dDb250
ZXh0Q29ubmVjdGlvbigqdGhpcyk7Cit9CiAKIElQQzo6Q29ubmVjdGlvbiogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7CkBA
IC02NSw2ICs3MSwxMiBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29u
bmVjdGlvbkNsb3NlZCgpCiAgICAgICAgIGZldGNoLT5mYWlsKFJlc291cmNlRXJyb3IgeyBlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJTZXJ2aWNlIFdvcmtlciBjb250ZXh0IGNs
b3NlZCJfcyB9KTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmll
ciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQor
eworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJG
b3JTZXNzaW9uKHNlc3Npb25JRCkuY29ubmVjdGlvbihkZXN0aW5hdGlvbklkZW50aWZpZXIuc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuY29udGV4dElkZW50
aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7Cit9CisKIHZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlckNv
bnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlciB7
IGRhdGEsIHNlc3Npb25JRCwgdXNlckFnZW50IH0pOwpAQCAtMTE3LDcgKzEyOSwxNyBAQCB2b2lk
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoU2tpcFdhaXRpbmcodWlu
dDY0X3QgY2FsbGJhY2tJRCkKIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNz
LT5zd0NvbnRleHRDb25uZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgqdGhpcyk7CisgICAgaWYg
KG1fbmV0d29ya1Byb2Nlc3MtPm5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBu
byBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOworICAgIHRlcm1pbmF0ZSgpOworCisg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+Zm9yRWFjaFNXU2VydmVyKFsmXShhdXRvJiBzZXJ2ZXIpIHsK
KyAgICAgICAgc2VydmVyLm1hcmtBbGxXb3JrZXJzRm9yUmVnaXN0cmFibGVEb21haW5Bc1Rlcm1p
bmF0ZWQocmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgfSk7CisKKyAgICBjb25uZWN0aW9uQ2xv
c2VkKCk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRUaHJv
dHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggOTBhMDdlYTI0YmJhZDMzNzU2N2E0YmVh
MzcyMjVmMzgyMjExYWE1Yi4uMjBlYzE1ZTZiZjk5ZjhlZDY5MmQwYmMyYjlkMmRhNWQwZTdmOGMy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRmV0Y2hP
cHRpb25zOworc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogfQogCkBAIC04Miw2ICs4Myw4IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKTsKKwogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IFdlYlByb2Nlc3MKICAg
ICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpIGZpbmFsOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA5OTQ5ZTNkNDM1ZjI0
N2I1MGJmZDQ0NGQ1MDZkZTJhOTUyN2RjNTJkLi5lMzE1OGZjOTBiMzU3NGU0Yjg2MGJkMjQxYzI3
YTFiMDQyNmViODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM2LDYgKzM2LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBNYXRjaEFsbCh1aW50
NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRRdWVyeU9wdGlvbnMgb3B0aW9ucyk7CiAgICAgQ2xhaW0odWludDY0X3QgY2xh
aW1SZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBz
Y3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVUeXBlKTsKKyAgICBQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0
IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMxMTQ2YmY2
MWNmNzNmOGQwMmQzNjZmNDY3NGY1ZjU3OWNjNWExODcuLjUxYjNlOTA4MDY2ZTVmOGM0MWVkODAx
ZjYxYWU5YjEwMTdkZjQ4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQyLDE2ICsxNDIsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmIHdlYlByb2NlcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3QgY29ubmVjdGlvblJlcXVlc3RJZGVudGlm
aWVyLCBXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKIHsKLSAgICBib29sIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKLSAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3Ry
YWJsZURvbWFpbjsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHdlYlByb2Nl
c3NQcm94eS5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKSB7Ci0gICAgICAgIGlzU2VydmljZVdv
cmtlclByb2Nlc3MgPSB0cnVlOwotICAgICAgICByZWdpc3RyYWJsZURvbWFpbiA9IHdlYlByb2Nl
c3NQcm94eS5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgIH0KLSNlbmRpZgotCi0gICAgY29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJv
Y2Vzc0lkZW50aWZpZXIoKSwgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcywgcmVnaXN0cmFibGVEb21h
aW4gfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQcm94
eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRp
Zmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICBjb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3
ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0aW9u
UmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEyMDks
MTIgKzEyMDAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldFNhbmRib3hFeHRlbnNp
b25zRm9yQmxvYkZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluKQotewotICAgIG1fcHJvY2Vzc1Bvb2wuZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJh
YmxlRG9tYWluKSwgV1RGOjpudWxsb3B0KTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NGb3JFeHBs
aWNpdFNlc3Npb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIG1f
cHJvY2Vzc1Bvb2wuZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklEKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKaW5kZXggODBkZmU2MGEyNDg0NDNkZDk1ZDFiZTkwYTlmMTQxYmMxYmJjMWJjOS4uODhk
YTdjMDRmNjYyYzg3YWI4MzM0OTJkYjg4OTA5Njc3YzQ2MzhhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTIz
OCw4ICsyMzgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJik7Ci0gICAgdm9pZCBlc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24o
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQg
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKICNlbmRpZgogCiAgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90
IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+
IHF1b3RhKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTRhZmU0YjVi
NzFhZjZiN2QzNDVmNTZiMGNmMWMxM2FkZGY2M2U1YS4uYTZkYmI3YzVjOTM2MzNjMjE0NGZlZDlk
Zjk2NjlmM2JmNTNhZjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjEs
OCArNjEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVy
IHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3NGb3JFeHBsaWNpdFNlc3Npb24oV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIGV4cGxpY2l0U2Vz
c2lvbikKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKICNlbmRpZgogCiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2lu
LCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVx
dWlyZWQpIC0+IChPcHRpb25hbDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggN2M2YzAyZGNmOTBiZjQ2ZTVl
YTg5ZmU1ZjY2NWZhMGIxYWNmMWI4Ny4uMDAxMmFiYmQ3ZGRmYzhlMjg1ZGMxNjVjMjVhYjA5N2Rh
NzMzMjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtNjg3LDE4ICs2ODcsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3gKIH0KIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiBw
cm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgT3B0aW9uYWw8UEFM
OjpTZXNzaW9uSUQ+IHNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBwcm94eSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVF9VTlVTRUQocHJveHksICZwcm94eSA9PSBt
X25ldHdvcmtQcm9jZXNzLmdldCgpKTsKIAotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQotICAgICAgICByZXR1cm47Ci0KICAgICBt
X21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuY2xlYXIoKTsKIAotICAgIFdlYnNpdGVE
YXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUgPSBudWxscHRyOwotICAgIGlmIChzZXNzaW9uSUQp
Ci0gICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ05v
bkRlZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9uSUQoKnNlc3Npb25JRCk7CisgICAgYXV0byogd2Vi
c2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nTm9uRGVmYXVsdERhdGFT
dG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwogCiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3Jl
KSB7CiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQpAQCAtNzA2LDYgKzcwMSw5IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSAmbV93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CiAgICAgfQogCisgICAgaWYgKG1f
c2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgp
KQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIApAQCAtNzE4LDcgKzcxNiw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhOZXR3b3JrUHJvCiAgICAgYXV0byogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eVB0
ciA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCk7CiAgICAgbV9wcm9jZXNzZXMuYXBw
ZW5kKFdURk1vdmUoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkpOwogCi0gICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eVB0ci0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQobV9zZXJ2
aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgp
IDogbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHNlc3Npb25JRC52
YWx1ZU9yKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKKyAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChtX3Nl
cnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVl
KCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSk7CiAgICAgaWYg
KCFtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCiAgICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHlQdHItPnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29y
a2VyVXNlckFnZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CmluZGV4IDUzNzBiZDI3OGZiZmJiYmRhNjg0ODQ1YmQyYzM0MGUxMDUwYzM3Y2UuLjIxNDI1ZDJl
NGU3ZjIwM2E1MGQ4ZTRjNzBiZWUyMTI1MWQzZDY0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0Owog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKKyAgICB2
b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNz
aW9uSUQpOwogICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdl
YlByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2VydmljZVdvcmtlclByb2Nlc3NlczsgfQogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xD
ZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNT
TENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzM5YzRiNjIyMzgxNGUwYjlmMjc0YTYxMDIxYjE5
OGY2OWQ4NmQ1Yy4uZDNjODJmMDQ2ODQ4YzhjZDA1OWJjMjU2OWJmNGNhMjkzYTRmZjE0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDk5LDkg
KzE0OTksOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVsZWFzZUJhY2tncm91bmRBY3Rpdml0
eVRva2VuRm9yRnVsbHNjcmVlbklucHV0KCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCBzZXNz
aW9uSUQgfSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZh
dWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNl
cnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgbV93ZWJzaXRl
RGF0YVN0b3JlLT5zZXNzaW9uSUQoKSB9LCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGFlOTEwYTUxNjI0OTkx
NmVjNzZkMDY3MDViMjU2NTI1YjNmZjk5M2IuLjVkNDM1YmYzZThkMGM2ZjExNDk5NDkyMTBhNDMy
ZWJiYTJlNmYyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC0zMTMsOCArMzEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVyZWYoKSBmaW5hbCB7IFRo
cmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZigpOyB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc3RhcnRGb3JTZXJ2aWNl
V29ya2Vycyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOworICAg
IHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYpOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHko
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3Jr
ZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggOTQ5Y2FkYTZjY2Y0NTMzYWY3NTE3YzY0MGVkMGQyZTYwZDY5MDVlZS4uODc4MDA2ZWQ5
NTMxMjAwNDNjYTlmMDkzZWFhZGVjNzA2YzM0YjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7Ci0gICAgICAgIGF1dG8gc2VydmljZVdvcmtlckNvbm5lY3Rpb24gPSBtX3N3Q29ubmVj
dGlvbnNCeUlkZW50aWZpZXIuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpOworICAgICAgICBh
dXRvIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmdl
dChQQUw6OlNlc3Npb25JRCB7IGRlY29kZXIuZGVzdGluYXRpb25JRCgpIH0pOwogICAgICAgICBp
ZiAoc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIGF1dG8gc3dDb25uZWN0aW9ucyA9IHN0ZDo6ZXhjaGFuZ2UobV9zd0Nv
bm5lY3Rpb25zQnlJZGVudGlmaWVyLCB7IH0pOworICAgIGF1dG8gc3dDb25uZWN0aW9ucyA9IHN0
ZDo6ZXhjaGFuZ2UobV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLCB7IH0pOwogICAgIGZvciAoYXV0
byYgY29ubmVjdGlvbiA6IHN3Q29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rp
b24tPmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKTsKICNlbmRpZgpAQCAtMjY0LDI1ICsyNjQsNiBA
QCBXZWJTV0NsaWVudENvbm5lY3Rpb24mIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6c2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaQogICAgICAgICByZXR1cm4gV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpjcmVhdGUoc2Vzc2lvbklEKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9Ci0K
LXZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpyZW1vdmVTV0NsaWVudENvbm5lY3Rpb24o
V2ViU1dDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQotewotICAgIEFTU0VSVChtX3N3Q29u
bmVjdGlvbnNCeUlkZW50aWZpZXIuY29udGFpbnMoY29ubmVjdGlvbi5zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcigpKSk7Ci0gICAgbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlmaWVyLnJlbW92ZShj
b25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwotfQotCi1TV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZVNX
Q2xpZW50Q29ubmVjdGlvbihXZWJTV0NsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCi17Ci0g
ICAgQVNTRVJUKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKLSAgICBTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nv
bm5lY3Rpb24tPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24uc2Vzc2lvbklEKCkpLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXU2VydmVy
Q29ubmVjdGlvbjo6UmVwbHkoaWRlbnRpZmllciksIDApOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOwotCi0gICAgQVNTRVJUKCFtX3N3Q29ubmVjdGlvbnNCeUlkZW50aWZpZXIu
Y29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIG1fc3dDb25uZWN0aW9uc0J5SWRlbnRpZmllci5h
ZGQoaWRlbnRpZmllciwgJmNvbm5lY3Rpb24pOwotCi0gICAgcmV0dXJuIGlkZW50aWZpZXI7Ci19
CiAjZW5kaWYKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246Om1lc3NhZ2VzQXZhaWxh
YmxlRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIG1lc3NhZ2VQ
b3J0SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggY2YzZWRlMTQxMDE5MTkx
MzRhMmJkMDgxYTJkZGQwMjFkZTdhNTU0My4uMmI0ZWExYTc5NGRhZTkzZTgzYjgxNDVhNTAxYjhj
YTMzNDJhZGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTc4LDkgKzc4LDYgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWJTV0NsaWVudENvbm5lY3Rp
b24qIGV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgeyByZXR1cm4gbV9zd0Nvbm5lY3Rpb25zQnlTZXNzaW9uLmdldChzZXNz
aW9uSUQpOyB9CiAgICAgV2ViU1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwotCi0gICAgV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBpbml0aWFsaXplU1dDbGllbnRDb25uZWN0aW9uKFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgcmVtb3ZlU1dDbGllbnRDb25uZWN0aW9uKFdlYlNX
Q2xpZW50Q29ubmVjdGlvbiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xMTMsNyArMTEwLDYg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViU1dDbGllbnRDb25uZWN0aW9uPj4gbV9zd0Nvbm5lY3Rp
b25zQnlTZXNzaW9uOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgV2ViU1dDbGllbnRDb25uZWN0aW9uKj4gbV9zd0Nvbm5lY3Rpb25zQnlJZGVudGlm
aWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBlNzVlZWZhZDE1NDcz
YTcwYWNlZGJhODI2MzNiMDU0NDUwMWEyMmMwLi5hOGFhNjc5NjIyOTJhYThhMjNjZmE2NjhiOWY2
N2Y1ZDM0NzQ3NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2guaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJTV09yaWdp
blRhYmxlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlckNsaWVudERhdGEuaD4KQEAgLTU1LDc3ICs1Nyw2MSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogV2ViU1dDbGllbnRDb25uZWN0aW9uOjpXZWJTV0NsaWVudENvbm5lY3Rp
b24oU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAg
ICAsIG1faWRlbnRpZmllcihQcm9jZXNzOjppZGVudGlmaWVyKCkpCiAgICAgLCBtX3N3T3JpZ2lu
VGFibGUobWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblRhYmxlPigpKQogewogICAgIEFTU0VSVCht
X3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQo
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0
YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIHsgc2Vzc2lvbklEIH0pOwogfQogCiBXZWJTV0NsaWVu
dENvbm5lY3Rpb246On5XZWJTV0NsaWVudENvbm5lY3Rpb24oKQogewotICAgIGlmIChtX2Nvbm5l
Y3Rpb24pCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLnJlbW92ZVNXQ2xpZW50Q29ubmVjdGlvbigqdGhpcyk7CisgICAgY2xl
YXIoKTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0
aW9uSWZOZWVkZWQoKQorSVBDOjpDb25uZWN0aW9uKiBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9jb25uZWN0aW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
LQotICAgIG1fY29ubmVjdGlvbiA9ICZuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpOwotICAgIG1faWRlbnRpZmllciA9IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5pbml0aWFs
aXplU1dDbGllbnRDb25uZWN0aW9uKCp0aGlzKTsKLQotICAgIHVwZGF0ZVRocm90dGxlU3RhdGUo
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVT4KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9u
OjplbnN1cmVDb25uZWN0aW9uQW5kU2VuZChjb25zdCBVJiBtZXNzYWdlKQotewotICAgIGluaXRp
YWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAg
ICBzZW5kKG1lc3NhZ2UpOworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwogfQogCiB2b2lkIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYgam9iRGF0YSkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNz
YWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTY2hlZHVsZUpvYkluU2VydmVyKGpvYkRhdGEp
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNjaGVkdWxlSm9i
SW5TZXJ2ZXIgeyBqb2JEYXRhIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmIHJlc3VsdCkKIHsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJlc3VsdCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hp
bmdTY3JpcHRJblNlcnZlciB7IHJlc3VsdCB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGVuc3VyZUNvbm5lY3Rp
b25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkFkZFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpBZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2
ZXIgeyBpZGVudGlmaWVyIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cmVt
b3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVtb3ZlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkluU2VydmVyKGlkZW50aWZpZXIpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OlJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZl
ciB7IGlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgU2Vy
dmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VJZGVudGlmaWVyLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIH0sIDApOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJj
ZUlkZW50aWZpZXIgfSk7CiB9CiAKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgY29udHJvbGxp
bmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRh
dGEoKSwgZGF0YSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgdXNlckFnZW50IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0YSwg
Y29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNlckFnZW50
IH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKQogewotICAg
IGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OlVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50IHsgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIgeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllciB9
IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6VW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQgeyBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJZGVudGlmaWVyIH0gfSk7CiB9CiAK
IHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlz
ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgZW5zdXJl
Q29ubmVjdGlvbkFuZFNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6RGlkUmVz
b2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uoa2V5KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpEaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSB7IGtleSB9KTsK
IH0KIAogYm9vbCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1heUhhdmVTZXJ2aWNlV29ya2VyUmVn
aXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikgY29uc3QK
QEAgLTE3NiwyNSArMTYyLDI0IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJl
Z2lzdHJhdGlvbihTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvCiAgICAgcnVuT3JE
ZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRv
cE9yaWdpbiA9IFdURk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAg
ICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVy
OwogICAgICAgICBtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzLmFkZChjYWxsYmFja0lE
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNoUmVnaXN0cmF0aW9uKGNhbGxiYWNr
SUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6TWF0Y2hSZWdpc3RyYXRpb24oY2FsbGJhY2tJRCwgdG9wT3JpZ2lu
LCBjbGllbnRVUkwpKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246
OnJ1bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit2
b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoRnVuY3Rp
b248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fc3dPcmlnaW5UYWJsZS0+aXNJbXBvcnRl
ZCgpKSB7CiAgICAgICAgIHRhc2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3Rh
c2tzUGVuZGluZ09yaWdpbkltcG9ydC5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7Ci0gICAgaW5pdGlh
bGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3Jp
Z2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2Fs
bGJhY2tJZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFza3MuYWRk
KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5k
U2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVh
ZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFja0lE
LCB0b3BPcmlnaW4sIGNsaWVudFVSTCkpOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6cmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQpAQCAtMjE2LDI5ICsy
MDEsMzIgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMoU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24KICAgICBydW5PckRlbGF5VGFza0Zvcklt
cG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgdG9wT3JpZ2luID0gV1RG
TW92ZSh0b3BPcmlnaW4pLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7CiAgICAgICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgICAgIG1f
b25nb2luZ0dldFJlZ2lzdHJhdGlvbnNUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwotICAgICAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpHZXRSZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwg
Y2xpZW50VVJMKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6R2V0UmVnaXN0cmF0aW9ucyB7IGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMIH0p
OwogICAgIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChG
ZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIgfSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVx
dWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHko
KSB9LCByZWZlcnJlciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNhbmNl
bEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQog
ewotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNv
bnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZp
ZXIgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250aW51
ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewotICAgIG1fY29ubmVjdGlvbiA9IG51bGxw
dHI7CisgICAgY2xlYXIoKTsKK30KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNsZWFy
KCkKK3sKICAgICBhdXRvIHJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdNYXRj
aFJlZ2lzdHJhdGlvblRhc2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0
aW9uVGFza3MudmFsdWVzKCkpCiAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CkBAIC0y
NDcsMzEgKzIzNSwyNiBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvblRv
U2VydmVyTG9zdCgpCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGdldFJlZ2lzdHJhdGlvblRh
c2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayh7IH0pOwogCisgICAgYXV0byByZWdpc3Ry
YXRpb25SZWFkeVRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdSZWdpc3RyYXRpb25SZWFkeVRhc2tz
KTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uUmVhZHlUYXNrcy52YWx1
ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKwogICAgIGNsZWFyUGVuZGluZ0pvYnMoKTsK
IH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBpbml0aWFsaXplQ29ubmVj
dGlvbklmTmVlZGVkKCk7Ci0KLSAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChpZGVudGlmaWVyKSwgTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQ6
OlJlcGx5KCkpOwotfQotCi1XZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAot
ewotICAgIGNvbnN0X2Nhc3Q8V2ViU1dDbGllbnRDb25uZWN0aW9uKj4odGhpcyktPmluaXRpYWxp
emVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbV9pZGVudGlmaWVyOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3Jr
ZXJGcm9tQ2xpZW50IHsgaWRlbnRpZmllciB9LCBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudDo6UmVwbHkoKSk7CiB9CiAKIHZvaWQg
V2ViU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKIHsKICAgICBtX2lz
VGhyb3R0bGVhYmxlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXJlQWxsUGFnZXNUaHJvdHRs
ZWFibGUoKTsKLSAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgbV9pc1Rocm90dGxlYWJsZSB9KTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlNldFRocm90dGxlU3RhdGUg
eyBtX2lzVGhyb3R0bGVhYmxlIH0pOwogfQogCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
c3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpT
dG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2sgeyB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgKaW5kZXggM2FmNDk1ZGNhOTQ0ZGVkYzkxZjU0M2NiZGQ2MTMxYjcwMzllYjky
My4uZWZlZjM2YmNhY2QyODU0NTdiZTAxNGY4ZDRjYmM5ZGE2OTljMmY4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU1dDbGll
bnRDb25uZWN0aW9uPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7IHNlc3Npb25JRCB9KTsgfQogICAg
IH5XZWJTV0NsaWVudENvbm5lY3Rpb24oKTsKIAotICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsK
KyAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAg
ICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwpAQCAtNzQsOCArNzQsNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlNXQ2xpZW50Q29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKLQogICAgIHZv
aWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKICAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKSBm
aW5hbDsKQEAgLTk3LDI3ICs5NSwyNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZVN0
b3JhZ2VKb2IoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKTsKIAotICAgIHZv
aWQgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzayk7
CisgICAgdm9pZCBydW5PckRlbGF5VGFza0ZvckltcG9ydChGdW5jdGlvbjx2b2lkKCk+JiYgdGFz
ayk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAgdWludDY0X3QgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKTsgfQorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklELnRvVUludDY0KCk7IH0KIAog
ICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6
OkhhbmRsZSYpOwogICAgIHZvaWQgc2V0U1dPcmlnaW5UYWJsZUlzSW1wb3J0ZWQoKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgZW5zdXJlQ29ubmVjdGlvbkFuZFNlbmQoY29uc3Qg
VSYgbWVzc2FnZSk7CisgICAgdm9pZCBjbGVhcigpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7CiAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAg
ICAgVW5pcXVlUmVmPFdlYlNXT3JpZ2luVGFibGU+IG1fc3dPcmlnaW5UYWJsZTsKIAogICAgIHVp
bnQ2NF90IG1fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXIgeyAwIH07CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2s+IG1fb25nb2luZ01hdGNoUmVnaXN0cmF0aW9u
VGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrPiBt
X29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2hl
blJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2s+IG1fb25nb2luZ1JlZ2lzdHJhdGlvblJlYWR5VGFz
a3M7Ci0gICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09yaWdp
bkltcG9ydDsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzUGVuZGluZ09yaWdp
bkltcG9ydDsKICAgICBib29sIG1faXNUaHJvdHRsZWFibGUgeyB0cnVlIH07CiB9OyAvLyBjbGFz
cyBXZWJTV1NlcnZlckNvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IDAyOGRhMzBiZTRhMzYzZjU4N2M2MjFkNDcwN2JhNTc4Mjc0ZGZjYjcuLjU2NjIw
ZjY3MmJkNzI3ZmNhMTkzNDgyM2QwOGVhOTM3NzJmZjE3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRl
ci5oIgpAQCAtODYsOCArODcsOSBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+IFNlcnZpY2VXb3JrZXJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUgogICAgIHJldHVy
biBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIH0K
IAotV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUdy
b3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCitXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IHJlZ2lzdHJhYmxlRG9tYWluLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fcmVnaXN0cmFibGVEb21haW4oV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQog
ICAgICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKICAgICAsIG1fcGFnZUlEKHBh
Z2VJRCkKQEAgLTk4LDYgKzEwMCw3IEBAIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uCiAjZW5kaWYK
IHsKICAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0b3JlKTsKKyAgICBtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7IG1fcmVnaXN0cmFibGVEb21haW4g
fSwgMCk7CiB9CiAKIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp+V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CkBAIC0yNjAsOSArMjYzLDkgQEAgdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllcgogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1p
bmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBXVEZN
b3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbikKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3Vy
Y2VPcmlnaW4pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KHNlc3Npb25JRCwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdl
LCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKIH0KIAogdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFsbChPcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMTZjYzBkZWU3NTg4NDBjYzgyYzRj
NDI4ZGI0MzhjNDJiZjljM2NiZi4uYjVhMmM2OGFlMjAxZTVhYjcyM2M2MzAzMzMzMTk5ZjFlNTJi
ZTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01Myw3ICs1Myw3IEBA
IHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90
IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAg
IH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTY1LDcg
KzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCiAgICAgLy8gV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdl
cjo6Q29ubmVjdGlvbi4KLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZpbmlzaEluc3RhbGwoT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3Vj
Y2Vzc2Z1bCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBm
aW5hbDsKQEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFRocm90dGxlU3Rh
dGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IG1fcmVnaXN0cmFibGVEb21haW47CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKICAgICBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fd2ViUGFnZVByb3h5SUQ7CiAgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggYjE2ZDZmOTcyMWExZDYxZWFjNGU3Y2NlN2Y0YTk4MzVhODk0MzlhZS4uNTM5YzE1
YjJiYzdhZDc5YjY5ZTlmNWNmOWM1NjMwMDM4YTc0NGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTgxMiwxMyArMTgxMiwxMyBAQCBMaWJXZWJSVENOZXR3
b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklE
KQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
d2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBB
TDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAgICAgLy8gV2UgYXJlIGluIHRoZSBT
ZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlz
aGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKICAgICAvLyBieSBjYWxs
aW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVk
cyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAg
Ly8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMu
CiAgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRD
b25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nv
bm5lY3Rpb24sIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSkpOwor
ICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1
ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBz
dG9yZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMGMyMTE5NmM5MTNi
YzQ5YzQ1NTRhYTE2MWFiNmJlMTI1YTE4NDJmYy4uMjkyOGMxMDk1NGI3ZmNjYmY5MjA1OTZhMjM2
OTY3NWE2ODVmN2Q0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0z
NjcsNyArMzY3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vz
c2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkY2VlMWY0NzRjNWE2Y2Y2
MTlhMWI4NmQyODU0MDBiMDVkZGUzODUzLi5mNDQ5ZjVmNDk3NjI5MmNkZjA2YjU4MWU4MWMyYjQ3
YjQxOTEyMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAg
RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90
IHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKKyAg
ICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0
X3QgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4s
IFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiAgICAgUmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50cygpCiAjZW5kaWYKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>