<?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>178855</bug_id>
          
          <creation_ts>2017-10-26 03:28:17 -0700</creation_ts>
          <short_desc>Make NetworkRTCResolver port agnostic</short_desc>
          <delta_ts>2018-03-07 08:14:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</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>
          
          <blocked>178860</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Alejandro G. Castro">alex</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1364756</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-26 03:28:17 -0700</bug_when>
    <thetext>We need these changes to use it in non cocoa ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364760</commentid>
    <comment_count>1</comment_count>
      <attachid>324982</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-26 03:41:54 -0700</bug_when>
    <thetext>Created attachment 324982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364768</commentid>
    <comment_count>2</comment_count>
      <attachid>324984</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-26 04:08:24 -0700</bug_when>
    <thetext>Created attachment 324984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364771</commentid>
    <comment_count>3</comment_count>
      <attachid>324986</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-26 04:18:55 -0700</bug_when>
    <thetext>Created attachment 324986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364773</commentid>
    <comment_count>4</comment_count>
      <attachid>324988</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-26 04:36:31 -0700</bug_when>
    <thetext>Created attachment 324988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364776</commentid>
    <comment_count>5</comment_count>
      <attachid>324989</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-26 04:46:03 -0700</bug_when>
    <thetext>Created attachment 324989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364804</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-26 06:07:04 -0700</bug_when>
    <thetext>The normal pattern we use for platform differences is to create a platform abstraction (in this case, maybe a DNSResolver or HostResolver class) in WebCore/platform and then use that. 

In this case, we have the beginning of an abstraction in WebCore already for DNS prefetching, DNSResolveQueue, that perhaps we could add to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364818</commentid>
    <comment_count>7</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2017-10-26 07:00:32 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; The normal pattern we use for platform differences is to create a platform
&gt; abstraction (in this case, maybe a DNSResolver or HostResolver class) in
&gt; WebCore/platform and then use that. 
&gt; 
&gt; In this case, we have the beginning of an abstraction in WebCore already for
&gt; DNS prefetching, DNSResolveQueue, that perhaps we could add to.

If reusing that class is an option that would be great for us, it was actually my plan to try to use the DNSSoup implementation in our port. If that is an option in your case too we can refactor this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397513</commentid>
    <comment_count>8</comment_count>
      <attachid>333372</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-08 05:39:39 -0800</bug_when>
    <thetext>Created attachment 333372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397514</commentid>
    <comment_count>9</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-08 05:42:40 -0800</bug_when>
    <thetext>After talking to youenn about the best approach we have implemented a solution using the DNSResolveQueue that can be used by other ports to move the code platform dependent code to that class in the platform directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397516</commentid>
    <comment_count>10</comment_count>
      <attachid>333374</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-08 06:02:12 -0800</bug_when>
    <thetext>Created attachment 333374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397519</commentid>
    <comment_count>11</comment_count>
      <attachid>333375</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-08 06:16:40 -0800</bug_when>
    <thetext>Created attachment 333375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397521</commentid>
    <comment_count>12</comment_count>
      <attachid>333376</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-08 06:52:05 -0800</bug_when>
    <thetext>Created attachment 333376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397873</commentid>
    <comment_count>13</comment_count>
      <attachid>333462</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-09 01:16:08 -0800</bug_when>
    <thetext>Created attachment 333462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397879</commentid>
    <comment_count>14</comment_count>
      <attachid>333465</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-09 01:42:46 -0800</bug_when>
    <thetext>Created attachment 333465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397880</commentid>
    <comment_count>15</comment_count>
      <attachid>333466</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-09 01:47:40 -0800</bug_when>
    <thetext>Created attachment 333466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397889</commentid>
    <comment_count>16</comment_count>
      <attachid>333471</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-09 02:03:19 -0800</bug_when>
    <thetext>Created attachment 333471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397890</commentid>
    <comment_count>17</comment_count>
      <attachid>333472</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-09 02:21:23 -0800</bug_when>
    <thetext>Created attachment 333472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397893</commentid>
    <comment_count>18</comment_count>
      <attachid>333473</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-09 02:39:20 -0800</bug_when>
    <thetext>Created attachment 333473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397919</commentid>
    <comment_count>19</comment_count>
      <attachid>333482</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-09 06:36:29 -0800</bug_when>
    <thetext>Created attachment 333482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397922</commentid>
    <comment_count>20</comment_count>
      <attachid>333483</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-09 06:58:14 -0800</bug_when>
    <thetext>Created attachment 333483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397924</commentid>
    <comment_count>21</comment_count>
      <attachid>333484</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-09 07:01:47 -0800</bug_when>
    <thetext>Created attachment 333484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398340</commentid>
    <comment_count>22</comment_count>
      <attachid>333588</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-12 04:07:10 -0800</bug_when>
    <thetext>Created attachment 333588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398343</commentid>
    <comment_count>23</comment_count>
      <attachid>333590</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-12 05:26:04 -0800</bug_when>
    <thetext>Created attachment 333590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398344</commentid>
    <comment_count>24</comment_count>
      <attachid>333591</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-12 05:47:53 -0800</bug_when>
    <thetext>Created attachment 333591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398346</commentid>
    <comment_count>25</comment_count>
      <attachid>333592</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-12 05:55:52 -0800</bug_when>
    <thetext>Created attachment 333592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398347</commentid>
    <comment_count>26</comment_count>
      <attachid>333593</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-12 06:06:46 -0800</bug_when>
    <thetext>Created attachment 333593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398348</commentid>
    <comment_count>27</comment_count>
      <attachid>333594</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-12 06:29:13 -0800</bug_when>
    <thetext>Created attachment 333594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398625</commentid>
    <comment_count>28</comment_count>
      <attachid>333676</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-13 01:18:26 -0800</bug_when>
    <thetext>Created attachment 333676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398629</commentid>
    <comment_count>29</comment_count>
      <attachid>333678</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-13 01:40:31 -0800</bug_when>
    <thetext>Created attachment 333678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398635</commentid>
    <comment_count>30</comment_count>
      <attachid>333680</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-13 03:51:54 -0800</bug_when>
    <thetext>Created attachment 333680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398639</commentid>
    <comment_count>31</comment_count>
      <attachid>333681</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-13 04:11:54 -0800</bug_when>
    <thetext>Created attachment 333681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398650</commentid>
    <comment_count>32</comment_count>
      <attachid>333685</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-13 06:24:24 -0800</bug_when>
    <thetext>Created attachment 333685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398918</commentid>
    <comment_count>33</comment_count>
      <attachid>333685</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-02-13 20:09:17 -0800</bug_when>
    <thetext>Comment on attachment 333685
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        No new tests because this is a refactor.

It would be nice if we could add some Unit tests to the functionalities exposed in DNS.h

&gt; Source/WebCore/ChangeLog:18
&gt; +        * SourcesCocoa.txt: Mov the DNSCFNet class to DNSResolveQueueCFNet.

s/Mov/Move.

&gt; Source/WebKit/ChangeLog:8
&gt; +        Create an specific Cocoa class to isolate the generic code in the base class, make the base implementation port

s/an/a/

&gt; Source/WebCore/platform/network/DNS.h:40
&gt; +    explicit IPAddress(const struct sockaddr_in* address)

This should take a ref instead of a pointer.

&gt; Source/WebCore/platform/network/DNS.h:46
&gt; +    const struct sockaddr_in* get() { return &amp;m_address; };

Return a ref as well.

&gt; Source/WebCore/platform/network/DNS.h:55
&gt; +    virtual void completed(const Vector&lt;IPAddress&gt;&amp;) { };

I guess sometimes we could get an error, which would call for something like ErrorOr&lt;Vector&gt;.
Probably completed could take a Vector&lt;IPAddress&gt;&amp;&amp;.
Instead of DNSResolveObserver, could we take a lambda, something like a Function&lt;void(Vector&lt;IPAddress&gt;&amp;&amp;)&gt;&amp;&amp;?

&gt; Source/WebCore/platform/network/DNSResolveQueue.cpp:49
&gt; +#endif

Instead of all those #ifdef, DNSResolveQueueSoup.h could directly define DNSResolveQueuePlatform.
Ditto for Curl and CFNet.

&gt; Source/WebCore/platform/network/DNSResolveQueue.cpp:80
&gt;      , m_lastProxyEnabledStatusCheckTime(0)

Maybe m_isUsingProxy and m_lastProxyEnabledStatusCheckTime could be initialized in DNSResolveQueue.h

&gt; Source/WebCore/platform/network/DNSResolveQueue.h:49
&gt; +    virtual void stopResolve(DNSResolveObserver*) = 0;

If we would pass a lambda here, resolve could return a uint64_t and stopResolve would take this uint64_t.

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:102
&gt; +    addresses.reserveInitialCapacity(1);

I would create addresses after the early return below.

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:109
&gt; +    addresses.uncheckedAppend(WebCore::IPAddress(ipaddress));

Might be able to write something like observer-&gt;completed(Vector&lt;WebCore::IPAddress&gt;::from(ipaddress))

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h:35
&gt; +class DNSResolveQueueSoup : public DNSResolveQueue {

Should be made final.

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h:39
&gt; +    void stopResolve(DNSResolveObserver*) final;

These two can be made private?

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h:42
&gt; +    void updateIsUsingProxy() final;

Why is it protected? Can it be private as well.

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp:53
&gt; +#endif

Or we could make NetworkRTCResolver.h declare a std::unique_ptr createNetworkRTCResolver(...) which would be defined in COCOA/Soup specific CPP files

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp:189
&gt; +            addresses.uncheckedAppend(RTCNetwork::IPAddress(rtc::IPAddress(address.get()-&gt;sin_addr)));

You can probably write something like: 
auto addresses = WTF::map(result.value().get(), [] (auto&amp; address) {
    return RTCNetwork::IPAddress { rtc::IPAddress { address.get()-&gt;sin_addr } };
});

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolver.h:31
&gt; +#include &quot;WebCore/DNS.h&quot;

Should be &lt;WebCore/DNS.h&gt; probably.

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolver.h:44
&gt; +    explicit NetworkRTCResolver(uint64_t identifier, CompletionHandler&amp;&amp;);

No need for explicit anymore.

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolver.h:48
&gt; +    virtual void stop();

Should use override.

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolverCocoa.cpp:35
&gt; +static void resolvedName(CFHostRef hostRef, CFHostInfoType typeInfo, const CFStreamError *error, void *info)

CFStreamError*, void*

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolverCocoa.cpp:60
&gt; +    resolver-&gt;completed(addresses);

Ditto for WTF::map.

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolverCocoa.h:36
&gt; +class NetworkRTCResolverCocoa : public NetworkRTCResolver {

Make class final.
Maybe add a FIXME to remove it once DNSResolver is implemented as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1399021</commentid>
    <comment_count>34</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-14 03:41:56 -0800</bug_when>
    <thetext>Thanks very much for the review!

(In reply to youenn fablet from comment #33)
&gt; Comment on attachment 333685 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=333685&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        No new tests because this is a refactor.
&gt; 
&gt; It would be nice if we could add some Unit tests to the functionalities
&gt; exposed in DNS.h
&gt; 

Right.

&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        * SourcesCocoa.txt: Mov the DNSCFNet class to DNSResolveQueueCFNet.
&gt; 
&gt; s/Mov/Move.
&gt; 

Right.

&gt; &gt; Source/WebKit/ChangeLog:8
&gt; &gt; +        Create an specific Cocoa class to isolate the generic code in the base class, make the base implementation port
&gt; 
&gt; s/an/a/
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/network/DNS.h:40
&gt; &gt; +    explicit IPAddress(const struct sockaddr_in* address)
&gt; 
&gt; This should take a ref instead of a pointer.
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/network/DNS.h:46
&gt; &gt; +    const struct sockaddr_in* get() { return &amp;m_address; };
&gt; 
&gt; Return a ref as well.
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/network/DNS.h:55
&gt; &gt; +    virtual void completed(const Vector&lt;IPAddress&gt;&amp;) { };
&gt; 
&gt; I guess sometimes we could get an error, which would call for something like
&gt; ErrorOr&lt;Vector&gt;.
&gt; Probably completed could take a Vector&lt;IPAddress&gt;&amp;&amp;.
&gt; Instead of DNSResolveObserver, could we take a lambda, something like a
&gt; Function&lt;void(Vector&lt;IPAddress&gt;&amp;&amp;)&gt;&amp;&amp;?
&gt; 

That is a good point, NetworkRTCResolver is already doing that ErrorOr&lt;Vector&gt; with a lambda
created in the NetworkRTCProvider, the lambda is stored in the Resolver, that is why I thought to
avoid a bigger refactor in the Cocoa code using the Observer with the lambda and
the identifier is a better option. But I can try that option, that would mean we could remove
NetworkRTCResolver as soon as Cocoa class is removed, maybe I can even do that for Soup
already and add some ifdef in the Provider class with a FIXME. It is a step further but I can
try that.

Regarding the errors basically Resolver sends errors when we destroy the object and the operation
is still active it could do it in other situations I can add API to the
observer to set it (SetError), Cocoa currently has a FIXME saying there is no information and bailing
without calling complete. Now I think there is a bug in the current Cocoa upstream code, it
must call complete with empty list or libwebrtc would not know it is done. I think I&apos;ll fix
this in the patch.

Regarding the information libwebrtc just gets boolean for this so just unknown it is ok
in this case but it is true any other code using the API in the future could take advantage
of that information. Honestly I was tempted to do a bigger refactor of the whole API for the
DNS :-) but I&apos;m not sure if there is any other situation other than RTC that will need it.
If you are hace a clearer understanding of the use of this code I can add more features.


&gt; &gt; Source/WebCore/platform/network/DNSResolveQueue.cpp:49
&gt; &gt; +#endif
&gt; 
&gt; Instead of all those #ifdef, DNSResolveQueueSoup.h could directly define
&gt; DNSResolveQueuePlatform.
&gt; Ditto for Curl and CFNet.
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/network/DNSResolveQueue.cpp:80
&gt; &gt;      , m_lastProxyEnabledStatusCheckTime(0)
&gt; If you are hace a clearer understanding of the use of this code I can add more features.
&gt; Maybe m_isUsingProxy and m_lastProxyEnabledStatusCheckTime could be
&gt; initialized in DNSResolveQueue.h
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/network/DNSResolveQueue.h:49
&gt; &gt; +    virtual void stopResolve(DNSResolveObserver*) = 0;
&gt; 
&gt; If we would pass a lambda here, resolve could return a uint64_t and
&gt; stopResolve would take this uint64_t.
&gt; 

Right. I replied about this in a previous comment.

&gt; &gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:102
&gt; &gt; +    addresses.reserveInitialCapacity(1);
&gt; 
&gt; I would create addresses after the early return below.

Right.

&gt; 
&gt; &gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:109
&gt; &gt; +    addresses.uncheckedAppend(WebCore::IPAddress(ipaddress));
&gt; 
&gt; Might be able to write something like
&gt; observer-&gt;completed(Vector&lt;WebCore::IPAddress&gt;::from(ipaddress))
&gt; 

Right, I&apos;ll try to add that.

&gt; &gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h:35
&gt; &gt; +class DNSResolveQueueSoup : public DNSResolveQueue {
&gt; 
&gt; Should be made final.
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h:39
&gt; &gt; +    void stopResolve(DNSResolveObserver*) final;
&gt; 
&gt; These two can be made private?
&gt; 

I don&apos;t think so, they are used in DNS.cpp.

&gt; &gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h:42
&gt; &gt; +    void updateIsUsingProxy() final;
&gt; 
&gt; Why is it protected? Can it be private as well.
&gt; 

It is used in the base class DNSResolveQueue and implemented in the
platform implementations. Before is was basically just defined per
platform, without inheritance.

&gt; &gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp:53
&gt; &gt; +#endif
&gt; 
&gt; Or we could make NetworkRTCResolver.h declare a std::unique_ptr
&gt; createNetworkRTCResolver(...) which would be defined in COCOA/Soup specific
&gt; CPP files
&gt; 

If we pass the completionHandler down to the DNS.h API I would basically try
to remove the NetworkRtcResolver all together and make the provider call
directly: resolve and stopResolve. Passing the id and the completion handler.
I can try to do the dance of the Cocoa code in this step if I do that :-),
compilation is always painful but I think I did so much already I can
basically go all the way in the rabbit hole :-).

&gt; &gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp:189
&gt; &gt; +            addresses.uncheckedAppend(RTCNetwork::IPAddress(rtc::IPAddress(address.get()-&gt;sin_addr)));
&gt; 
&gt; You can probably write something like: 
&gt; auto addresses = WTF::map(result.value().get(), [] (auto&amp; address) {
&gt;     return RTCNetwork::IPAddress { rtc::IPAddress { address.get()-&gt;sin_addr
&gt; } };
&gt; });
&gt; 

Right.

&gt; &gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolver.h:31
&gt; &gt; +#include &quot;WebCore/DNS.h&quot;
&gt; 
&gt; Should be &lt;WebCore/DNS.h&gt; probably.
&gt; 

Right.

&gt; &gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolver.h:44
&gt; &gt; +    explicit NetworkRTCResolver(uint64_t identifier, CompletionHandler&amp;&amp;);
&gt; 
&gt; No need for explicit anymore.
&gt; 

Right.

&gt; &gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolver.h:48
&gt; &gt; +    virtual void stop();
&gt; 
&gt; Should use override.
&gt; 

Right.

&gt; &gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolverCocoa.cpp:35
&gt; &gt; +static void resolvedName(CFHostRef hostRef, CFHostInfoType typeInfo, const CFStreamError *error, void *info)
&gt; 
&gt; CFStreamError*, void*
&gt; 

Right.

&gt; &gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolverCocoa.cpp:60
&gt; &gt; +    resolver-&gt;completed(addresses);
&gt; 
&gt; Ditto for WTF::map.
&gt; 

Right.

&gt; &gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolverCocoa.h:36
&gt; &gt; +class NetworkRTCResolverCocoa : public NetworkRTCResolver {
&gt; 
&gt; Make class final.
&gt; Maybe add a FIXME to remove it once DNSResolver is implemented as well.

Right. I&apos;ll try to check if I can remove it already.

Thanks again for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400318</commentid>
    <comment_count>35</comment_count>
      <attachid>334149</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-19 03:44:44 -0800</bug_when>
    <thetext>Created attachment 334149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400321</commentid>
    <comment_count>36</comment_count>
      <attachid>334150</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-19 04:10:16 -0800</bug_when>
    <thetext>Created attachment 334150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400326</commentid>
    <comment_count>37</comment_count>
      <attachid>334152</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-19 04:29:38 -0800</bug_when>
    <thetext>Created attachment 334152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400327</commentid>
    <comment_count>38</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-19 04:38:55 -0800</bug_when>
    <thetext>I added most of the comments, just avoided some of the changes in the Cocoa code and leave that for the moment where you can refactor that code because I do not have a working machine with that platform around to do bigger changes. At that point we can even try to get rid of the NetworkRTCResolver and call directly to the DNS.h APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400328</commentid>
    <comment_count>39</comment_count>
      <attachid>334153</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-19 04:54:41 -0800</bug_when>
    <thetext>Created attachment 334153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400337</commentid>
    <comment_count>40</comment_count>
      <attachid>334156</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-19 05:39:55 -0800</bug_when>
    <thetext>Created attachment 334156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400342</commentid>
    <comment_count>41</comment_count>
      <attachid>334157</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-19 05:48:50 -0800</bug_when>
    <thetext>Created attachment 334157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400348</commentid>
    <comment_count>42</comment_count>
      <attachid>334158</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-02-19 06:12:50 -0800</bug_when>
    <thetext>Created attachment 334158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403643</commentid>
    <comment_count>43</comment_count>
      <attachid>334158</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-05 09:42:31 -0800</bug_when>
    <thetext>Comment on attachment 334158
Patch

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

&gt; Source/WebCore/platform/network/DNS.cpp:44
&gt; +void resolveDNS(const String&amp; hostname, uint64_t identifier, DNSCompletionHandler&amp; completionHandler)

Probably a DNSCompletionHandler&amp;&amp;

&gt; Source/WebCore/platform/network/DNS.cpp:50
&gt; +    WebCore::DNSResolveQueue::singleton().resolve(hostname, identifier, completionHandler);

And WTFMove here.

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:97
&gt; +    auto* completionHandler = static_cast&lt;DNSCompletionHandler*&gt;(data);

It seems strange for DNSCompletionHandler to be passed directly here.
Usually when we pass a completion handler, we store it, so maybe DNSResolveQueueSoup could store it directly.
Or we would pass to DNSResolveQueueSoup the object owning the completion handler, which would be NetworkRTCResolver (that is in WebKit namespace now).

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h:39
&gt; +    void stopResolve(uint64_t identifier) final;

Can probably be made private at some point.

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h:47
&gt; +    HashMap&lt;uint64_t, GRefPtr&lt;GCancellable&gt;&gt; m_cancelHandlers;

I would tend to augment this map to store pending completion handlers.

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp:180
&gt; +            });

Remove 4 spaces?

&gt; Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolver.h:49
&gt; +    WebCore::DNSCompletionHandler m_completionHandler;

If we let the queue store the completion handler, NetworkRTCResolver would just store the identifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403914</commentid>
    <comment_count>44</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-06 01:26:20 -0800</bug_when>
    <thetext>Thanks for the review! :-) All the changes you propose are because the completion handler is still owned by the NetworkRTCResolver, the reason I did not change this was I had to modify the cocoa code more deeply as I said in comment 38.

My proposal for the final design or the code would be to remove the NetworkRTCResolver object and let the NetworkRTCProvider call directly to the DNS API that stores the handler in the Queue but to do that I had to modify the cocoa code completely, that is why I avoided it and proposed this as a first step, and later when we decide if we want to remove the NetworkRTCResolver we store the handlers in the queue.

My proposal to go ahead is to write the final solution for soup and add an ifdef for cocoa in the RTCPRovider code, that you can remove when you implement it for cocoa. Does that sound good?

Thanks again for the review.

(In reply to youenn fablet from comment #43)
&gt; Comment on attachment 334158 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=334158&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/DNS.cpp:44
&gt; &gt; +void resolveDNS(const String&amp; hostname, uint64_t identifier, DNSCompletionHandler&amp; completionHandler)
&gt; 
&gt; Probably a DNSCompletionHandler&amp;&amp;
&gt;

...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403970</commentid>
    <comment_count>45</comment_count>
      <attachid>335087</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-06 06:03:07 -0800</bug_when>
    <thetext>Created attachment 335087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403972</commentid>
    <comment_count>46</comment_count>
      <attachid>335088</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-06 06:12:54 -0800</bug_when>
    <thetext>Created attachment 335088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403977</commentid>
    <comment_count>47</comment_count>
      <attachid>335090</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-06 06:27:04 -0800</bug_when>
    <thetext>Created attachment 335090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403978</commentid>
    <comment_count>48</comment_count>
      <attachid>335091</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-06 06:29:05 -0800</bug_when>
    <thetext>Created attachment 335091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403983</commentid>
    <comment_count>49</comment_count>
      <attachid>335094</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-06 06:58:22 -0800</bug_when>
    <thetext>Created attachment 335094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403984</commentid>
    <comment_count>50</comment_count>
      <attachid>335095</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-06 07:05:07 -0800</bug_when>
    <thetext>Created attachment 335095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404024</commentid>
    <comment_count>51</comment_count>
      <attachid>335095</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-03-06 09:29:00 -0800</bug_when>
    <thetext>Comment on attachment 335095
Patch

LGTM!

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

&gt; Source/WebCore/platform/network/DNS.h:40
&gt; +    IPAddress(const struct sockaddr_in&amp; address)

Should be explicit.

&gt; Source/WebCore/platform/network/DNS.h:52
&gt; +enum class DNSError { Unknown, CantResolve, Cancelled };

s/CantResolve/CannotResolve, not exactly sure what this means, is Timeout better?
Unknown means there is an error? Maybe change it to General?

&gt; Source/WebCore/platform/network/DNS.h:54
&gt; +using DNSAddressesOrError = Expected&lt;std::reference_wrapper&lt;Vector&lt;WebCore::IPAddress&gt;&gt;, DNSError&gt;;

I would go with Expected&lt;Vector&lt;WebCore::IPAddress&gt;, DNSError&gt;
We probably create a Vector anyway in our resolution and we can move it to create DNSAddressesOrError.

&gt; Source/WebCore/platform/network/DNS.h:59
&gt; +WEBCORE_EXPORT void stopResolveDNS(uint64_t identifier);

As a side note, we have ObjectIdentifier which allows to type identifiers without any runtime cost.
This allows ensuring we are not mixing identifiers at compile time.
See for instance ServiceWorkerTypes.h for some examples.
Maybe we could use this here as well, as a follow-up for instance.

&gt; Source/WebCore/platform/network/cf/DNSResolveQueueCFNet.h:36
&gt; +    void stopResolve(uint64_t identifier) final;

Do you need these to be public?

&gt; Source/WebCore/platform/network/cf/DNSResolveQueueCFNet.h:39
&gt; +    void updateIsUsingProxy() final;

Ditto here.

&gt; Source/WebCore/platform/network/curl/DNSResolveQueueCurl.h:36
&gt; +    void stopResolve(uint64_t identifier) final;

Ditto.

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:35
&gt; +#include &lt;wtf/CompletionHandler.h&gt;

Not sure this include is needed.

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:101
&gt; +    auto completionHandler = resolveQueue-&gt;getCompletionHandler(identifier);

Maybe there is a way to have takeCompletionHandler() which would allow getting and removing it at the same time?

&gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:147
&gt; +        return nullptr;

I would add ASSERT(completionAndCancelHandlers != m_completionAndCancelHandlers.end()) since there is probably something wrong in that case.
Or maybe add the assert at the call site?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404310</commentid>
    <comment_count>52</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-07 04:11:37 -0800</bug_when>
    <thetext>Thanks for the review! :-)

(In reply to youenn fablet from comment #51)
&gt; Comment on attachment 335095 [details]
&gt; Patch
&gt; 
&gt; LGTM!
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335095&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/DNS.h:40
&gt; &gt; +    IPAddress(const struct sockaddr_in&amp; address)
&gt; 
&gt; Should be explicit.
&gt; 

Right.

&gt; &gt; Source/WebCore/platform/network/DNS.h:52
&gt; &gt; +enum class DNSError { Unknown, CantResolve, Cancelled };
&gt; 
&gt; s/CantResolve/CannotResolve, not exactly sure what this means, is Timeout
&gt; better?
&gt; Unknown means there is an error? Maybe change it to General?
&gt; 

It is the error we have in soup library SOUP_STATUS_CANT_RESOLVE, the documentation doesn&apos;t say much more as usual :-). I&apos;ve checked the GIO library which is the one handling this and apparently there are 3 situations that are handled with that: the address is not found, network problem or similar, or unknown. It looks pretty general but all of them mean it can not resolve so I think it is not bad option for the name.

&gt; &gt; Source/WebCore/platform/network/DNS.h:54
&gt; &gt; +using DNSAddressesOrError = Expected&lt;std::reference_wrapper&lt;Vector&lt;WebCore::IPAddress&gt;&gt;, DNSError&gt;;
&gt; 
&gt; I would go with Expected&lt;Vector&lt;WebCore::IPAddress&gt;, DNSError&gt;
&gt; We probably create a Vector anyway in our resolution and we can move it to
&gt; create DNSAddressesOrError.
&gt; 

Right, I&apos;ll change the Cocoa code accordingly.

&gt; &gt; Source/WebCore/platform/network/DNS.h:59
&gt; &gt; +WEBCORE_EXPORT void stopResolveDNS(uint64_t identifier);
&gt; 
&gt; As a side note, we have ObjectIdentifier which allows to type identifiers
&gt; without any runtime cost.
&gt; This allows ensuring we are not mixing identifiers at compile time.
&gt; See for instance ServiceWorkerTypes.h for some examples.
&gt; Maybe we could use this here as well, as a follow-up for instance.
&gt; 

Sounds interesting option for a follow up refactor, the identifier comes from the WebProcess so probably we would need to modify all the IPC.

&gt; &gt; Source/WebCore/platform/network/cf/DNSResolveQueueCFNet.h:36
&gt; &gt; +    void stopResolve(uint64_t identifier) final;
&gt; 
&gt; Do you need these to be public?
&gt; 

Yes, this is used to delegate the action for the stopResolveDNS API in DNS.h.

&gt; &gt; Source/WebCore/platform/network/cf/DNSResolveQueueCFNet.h:39
&gt; &gt; +    void updateIsUsingProxy() final;
&gt; 
&gt; Ditto here.
&gt; 

Right, this was was a leftover of one of the refactors.

&gt; &gt; Source/WebCore/platform/network/curl/DNSResolveQueueCurl.h:36
&gt; &gt; +    void stopResolve(uint64_t identifier) final;
&gt; 
&gt; Ditto.
&gt; 

This needs to be public.

&gt; &gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:35
&gt; &gt; +#include &lt;wtf/CompletionHandler.h&gt;
&gt; 
&gt; Not sure this include is needed.
&gt; 

I&apos;ve checked it is needed.

&gt; &gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:101
&gt; &gt; +    auto completionHandler = resolveQueue-&gt;getCompletionHandler(identifier);
&gt; 
&gt; Maybe there is a way to have takeCompletionHandler() which would allow
&gt; getting and removing it at the same time?
&gt; 

Not sure, I&apos;ll check it.

&gt; &gt; Source/WebCore/platform/network/soup/DNSResolveQueueSoup.cpp:147
&gt; &gt; +        return nullptr;
&gt; 
&gt; I would add ASSERT(completionAndCancelHandlers !=
&gt; m_completionAndCancelHandlers.end()) since there is probably something wrong
&gt; in that case.
&gt; Or maybe add the assert at the call site?

Good point, I&apos;ll use an assertion.

Thanks again for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404324</commentid>
    <comment_count>53</comment_count>
      <attachid>335187</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-07 05:37:29 -0800</bug_when>
    <thetext>Created attachment 335187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404325</commentid>
    <comment_count>54</comment_count>
      <attachid>335188</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-07 05:55:54 -0800</bug_when>
    <thetext>Created attachment 335188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404328</commentid>
    <comment_count>55</comment_count>
      <attachid>335189</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-07 06:41:37 -0800</bug_when>
    <thetext>Created attachment 335189
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404336</commentid>
    <comment_count>56</comment_count>
      <attachid>335189</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-07 07:21:29 -0800</bug_when>
    <thetext>Comment on attachment 335189
Patch for landing

Rejecting attachment 335189 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 335189, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
e too many unreachable loose objects; run &apos;git prune&apos; to remove them.

Current branch master is up to date.
Auto packing the repository in background for optimum performance.
See &quot;git help gc&quot; for manual housekeeping.
error: The last gc run reported the following. Please correct the root cause
and remove /Volumes/Data/EWS/WebKit/.git/gc.log.
Automatic cleanup will not be performed until the file is removed.

warning: There are too many unreachable loose objects; run &apos;git prune&apos; to remove them.


Full output: http://webkit-queues.webkit.org/results/6839248</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404347</commentid>
    <comment_count>57</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-03-07 08:13:28 -0800</bug_when>
    <thetext>commit-queue failed in a weird way, it landed the patch but failed to update, apparently some performance problem with git.

https://trac.webkit.org/changeset/229359/webkit

Anyway it seems everything worked so closing the bug.

Thanks everyone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404348</commentid>
    <comment_count>58</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-07 08:14:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/38222040&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324982</attachid>
            <date>2017-10-26 03:41:54 -0700</date>
            <delta_ts>2017-10-26 04:08:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20171026124153.patch</filename>
            <type>text/plain</type>
            <size>18894</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0MjMzMzkzMzM5NjlkYWNk
ZjQ3ZTk2YzY0MWE5NGIyNTJiYTMwMTAuLjkwY2ZhYmVjMDJjY2RlZmNkZjEyYjM3M2RiYTY0M2I4
YzNhMTE3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMTAtMjYgIEFsZWphbmRy
byBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRD
UmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3JlYXRlIGFuIHNwZWNpZmljIENvY29hIGNsYXNzLCBmb3IgdGhlIG90
aGVyIHBsYXRmb3JtcyBhZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDogQ3JlYXRlIGFuIGFsaWFzIGNs
YXNzIG5hbWUgZGVmaW5lZCBwZXIgcGxhdGZvcm0gdG8gaW5zdGFudGlhdGUgdGhlIHJlc29sdmVy
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKTog
VXNlZCB0aGUgYWxpYXMgY2xhc3MgbmFtZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmg6IEFkZGVkIGNyZWF0ZVJlc29sdmVyIGFuZCBzdG9wUmVz
b2x2ZXIgdG8gdGhlIGNsYXNzIGRlZmluaXRpb25zLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogTWFr
ZSB0aGlzIGNsYXNzIHZpcnR1YWwgYW5kIGFkZCBhbiBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKTogRGl0dG8uCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDogQ29w
aWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAg
ICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBBZGQgTmV0d29ya1JUQ1Jlc29sdmVyIGNvbXBpbGF0aW9u
IGZvciBHVEsuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFk
ZCB0aGUgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgY2xhc3MgdG8gdGhlIGNvbXBpbGF0aW9uLgor
CiAyMDE3LTEwLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBOZXR3b3JrIHByb2Nlc3MgY3Jhc2ggdW5kZXIgV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OnJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlRm9yU2luZ2xlQ2hhbGxlbmdl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYjZlYWRjZDhmYmM3NDE3MjNmNDVlODVjZTJjYzU1
YWE5YmQ5ZTdlMC4uZTg3OWRmMDE5NjM3NWVjYTkyOTM2Y2I0NjIxOGVhYThjNzA3NDQ2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC00Miw2ICs0MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZv
cm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTsKKyNlbHNlCit1c2luZyBOZXR3b3JrUlRDUmVz
b2x2ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlcjsKKyNlbmRpZgorCiBzdGF0aWMgaW5s
aW5lIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkKIHsKICAgICBh
dXRvIHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCk7CkBAIC0x
NjQsNyArMTcwLDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVOZXR3b3Jr
UlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3b3JrUlRD
UHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3
b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFk
ZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihbdGhpcywgaWRlbnRp
Zmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgewogICAgICAgICAgICAgaWYg
KHJlc3VsdC5lcnJvcigpICE9IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkK
ICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuaAppbmRleCA4NWZlYzc1MTlhMjQ0NmFjODYwZDM3OWJmNWVlM2ExOGM1NmMx
ZTU4Li40MWQ3NWUxMjllNzBjMmY5NzI0N2VkMmI3YWYwMjk1MmJkYmJhZDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuaApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TGliV2ViUlRDU29ja2V0Q2xpZW50PiB0YWtlU29ja2V0KHVpbnQ2NF90KTsKICAgICB2b2lkIHJl
c29sdmVyRG9uZSh1aW50NjRfdCk7CisgICAgdm9pZCBjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpOworICAgIHZvaWQgc3RvcFJlc29sdmVy
KHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBjbG9zZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi43
N2I4ZDNjMTdhYmM0MzUwMjRkYzdiNTQwMmViMjBjNTU0OGRlMTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5jcHAKQEAgLTMyLDM0ICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMg
dm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJ
bmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKLXsKLSAgICBBU1NF
UlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5kb21haW4p
IHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlz
IG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3
b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAgIENGQXJy
YXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5n
KGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwot
Ci0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsK
LSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAgYWRkcmVz
c2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJlZiBkYXRh
ID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBp
bmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0
cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAgICBhZGRy
ZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVz
cyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBsZXRlZChh
ZGRyZXNzZXMpOwotfQotCiBOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKQEAgLTY3LDI5ICszOSwxMCBA
QCBOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6On5OZXR3b3JrUlRD
UmVzb2x2ZXIoKQogewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0
KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBD
Rkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKICAgICBpZiAo
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpVbmtub3duKSk7
CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJl
c3MpCi17Ci0gICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBDRkhv
c3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIgfTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUs
ICZjb250ZXh0KTsKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwg
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIEJvb2xl
YW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhv
c3RBZGRyZXNzZXMsIG51bGxwdHIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OwotfQotCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCi17Ci0gICAgQ0ZIb3N0Q2Fu
Y2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFk
ZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29t
cGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3Rl
ZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KIHZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21w
bGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKIHsK
ICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFu
ZGxlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlci5oCmluZGV4IDFiY2Y3MzZlNzY3YTY3MDRiNWNlOTdjZGE4Yzcy
M2JkZTM1ZTcyNzguLmMwN2IzOWZiMDQ0ZTJiNzU2ZjI3M2M0M2U5NGZlMDkwYmQzODhmYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgVVNFKExJQldFQlJUQykKIAog
I2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTQ0LDE0ICs0MywxMyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgTmV0
d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIH5OZXR3b3JrUlRDUmVz
b2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAgICB2
b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KSB7IH07CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSB7IH07CiAKICAgICB2b2lkIGNvbXBsZXRl
ZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYpOwogCiBwcml2YXRlOgogICAg
IENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgUmV0YWluUHRyPENG
SG9zdFJlZj4gbV9ob3N0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY1NWYzODYxM2FkNmQ5NmJjYzk4OTRmZjgz
OGI4YTczNGI2YWE0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApAQCAtMCwwICsxLDg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9pZCByZXNvbHZlZE5h
bWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0
cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJ
bmZvLCAhdHlwZUluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAgICAgICAgLy8g
RklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBp
biB0aGUgY2FsbGJhY2suCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoaW5m
byk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSo+KGluZm8pOworCisgICAgQm9vbGVhbiByZXN1bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNv
bHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwg
JnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBzaXpl
X3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOworICAgIFZlY3Rv
cjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRh
UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKKyAg
ICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisgICAgICAgIGFkZHJlc3Nlcy51bmNo
ZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3Mt
PnNpbl9hZGRyKSkpOworICAgIH0KKyAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7
Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eo
KQoreworICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVu
TG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRD
bGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1f
aG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
YWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4
dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAg
Q0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7Cisg
ICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1
cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENG
SG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBu
dWxscHRyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jl
c29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7
CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhh
bmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6
Q2FuY2VsbGVkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNF
KExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZjhkMmM2
Y2EzMzVkNDI5NTliYTQxNjNhZDY1ZGU1ODE0YmI3MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
CkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShM
SUJXRUJSVEMpCisKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUg
PENGTmV0d29yay9DRkhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxldGlvbkhhbmRsZXIm
JikgPSBkZWZhdWx0OworICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpOworCisgICAgdm9p
ZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZp
bmFsOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IGQwYzI4OWM0NTRhMTc5NmIzYzFmYTUzODJlMzdlZmQ4YTQ2
ZDY3OTQuLjA4ZTYzYWU5YjllMGFkN2IyYTY3ZTU3NGViNzllNTk5OGNhZTJhNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDAsNiArNDAsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09V
UkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogICAg
IE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCisg
ICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKwogICAgIFBs
YXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4
L0F0dGFjaG1lbnRVbml4LmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOTcxZmJkZTdmMzRjMzkxMGM0MTNkNTBlNzQwZDYxZmRlYjYxMzgyNi4uZWNiYWY1NjIy
OGJmOWJjNzk0NDUzMzUwOTU5ODVmYmRjNjYwY2E2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NzgsNiArODc4LDcgQEAKIAkJNDEw
NDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8q
IFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAgLyogUlRD
TmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1
NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDExMkI1NTUxRkEwRUE3QTAw
RTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRG
NzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0
d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1Nv
Y2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJ
CTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIw
MDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpAQCAtMzE3Niw2ICszMTc3
LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENS
ZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAw
RTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0
aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tl
dC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5l
dHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
U29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MDQ1LDYgKzYwNDgsOCBA
QAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVz
c2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtS
VENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1OTgxREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3NTk5MURFODRGQjAwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1OUQxREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDMxMSw2ICsxMDMx
Niw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUgLyogTmV0
d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQx
MTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMx
ODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324984</attachid>
            <date>2017-10-26 04:08:24 -0700</date>
            <delta_ts>2017-10-26 04:18:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20171026130822.patch</filename>
            <type>text/plain</type>
            <size>18372</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0MjMzMzkzMzM5NjlkYWNk
ZjQ3ZTk2YzY0MWE5NGIyNTJiYTMwMTAuLjRmMDhjMTZmOWEzMjIwZThiMThkMjk3YzI5YTU0OTNk
ZGZiN2QwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTctMTAtMjYgIEFsZWphbmRy
byBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRD
UmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3JlYXRlIGFuIHNwZWNpZmljIENvY29hIGNsYXNzLCBmb3IgdGhlIG90
aGVyIHBsYXRmb3JtcyBhZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDogQ3JlYXRlIGFuIGFsaWFzIGNs
YXNzIG5hbWUgZGVmaW5lZCBwZXIgcGxhdGZvcm0gdG8gaW5zdGFudGlhdGUgdGhlIHJlc29sdmVy
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKTog
VXNlZCB0aGUgYWxpYXMgY2xhc3MgbmFtZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBj
b2RlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsIGFuZCBhZGQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBD
b2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3Ig
R1RLLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhl
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAx
Ny0xMC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TmV0d29yayBwcm9jZXNzIGNyYXNoIHVuZGVyIFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvclNpbmdsZUNoYWxsZW5nZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwCmluZGV4IGI2ZWFkY2Q4ZmJjNzQxNzIzZjQ1ZTg1Y2UyY2M1NWFhOWJk
OWU3ZTAuLmU4NzlkZjAxOTYzNzVlY2E5MjkzNmNiNDYyMThlYWE4YzcwNzQ0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
KyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0g
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVy
UGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGljIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAgICAgYXV0byB0
aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpAQCAtMTY0LDcg
KzE3MCw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1Nv
Y2tldE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAKIHZvaWQgTmV0d29ya1JUQ1Byb3Zp
ZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JU
Q1Jlc29sdmVyPihbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNz
ZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybT4oW3RoaXMsIGlkZW50aWZpZXJd
KE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChyZXN1
bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5jZWxsZWQpCiAgICAg
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2Vi
UlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBpZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAx
NmUuLjc3YjhkM2MxN2FiYzQzNTAyNGRjN2I1NDAyZWIyMGM1NTQ4ZGUxNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyLmNwcApAQCAtMzIsMzQgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUg
dHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQotewotICAg
IEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRv
bWFpbikgewotICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGlu
Zm8gaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0
PE5ldHdvcmtSVENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAg
Q0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJl
c3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7Ci0KLSAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNz
ZXMpOwotICAgIFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBh
ZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVm
IGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNz
ZXMsIGluZGV4KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAg
IGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBB
ZGRyZXNzKGFkZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxl
dGVkKGFkZHJlc3Nlcyk7Ci19Ci0KIE5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29s
dmVyKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewpAQCAtNjcsMjkgKzM5
LDEwIEBAIE5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdv
cmtSVENSZXNvbHZlcigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9z
dC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwot
ICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVy
KSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25v
d24pKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYg
YWRkcmVzcykKLXsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAg
IENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVk
TmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0Lmdl
dCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAg
Qm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwg
a0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Ci19Ci0KLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKLXsKLSAgICBDRkhv
c3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZI
b3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
bV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKLX0KLQogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6
OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRkcmVzc2Vz
KQogewogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5N2Nk
YThjNzIzYmRlMzVlNzI3OC4uZDU4ZmY2YTM2OTg1MDJjMmM2MzdjMjFlMzUwZmIxNDkyZjRlNzAx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBVU0UoTElCV0VCUlRD
KQogCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3Qu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNDQsMTQgKzQzLDEzIEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgfk5ldHdvcmtS
VENSZXNvbHZlcigpOwogCi0gICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOwot
ICAgIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIHsgfTsKIAotICAgIHZvaWQgY29t
cGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6
Citwcm90ZWN0ZWQ6CiAgICAgQ29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsK
LSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7CisKKyAgICB2b2lkIGNvbXBsZXRlZChj
b25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIzZDgw
Yzk5Nzg4Mjc2MjQ0MDk5MTcyMDMzNTQ3MDg4NjliZjQ4MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBl
IHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgaWYgKGVycm9yLT5k
b21haW4pIHsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBp
bmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2Fz
dDxOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSo+KGluZm8pOworCisgICAgQm9vbGVhbiByZXN1bHQ7
CisgICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdl
dEFkZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisKKyAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRB
ZGRyZXNzZXMpOworICAgIFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsK
KyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZE
YXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRB
ZGRyZXNzZXMsIGluZGV4KTsKKyAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Cisg
ICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0
Yzo6SVBBZGRyZXNzKGFkZHJlc3MtPnNpbl9hZGRyKSkpOworICAgIH0KKyAgICByZXNvbHZlci0+
Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYShDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQor
eworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNvY29h
KCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1
bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0U2V0
Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBt
X2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENvbnRl
eHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAg
IENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOwor
ICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRD
dXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQgPSBD
Rkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3Nlcywg
bnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQg
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbEluZm9S
ZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMp
OworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25I
YW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6
OkNhbmNlbGxlZCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVT
RShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzBlNTc0
ZTFjOWVhOGJjYjg2OTVlOGFhMzhiMmRlN2JhYTVjZGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
aApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0Uo
TElCV0VCUlRDKQorCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYSA6IHB1YmxpYyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5kbGVy
JiYpOworICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpOworCisgICAgdm9pZCBzdGFydChj
b25zdCBTdHJpbmcmIGFkZHJlc3MpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCitw
cml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IGQwYzI4OWM0NTRhMTc5NmIzYzFmYTUzODJlMzdlZmQ4YTQ2ZDY3OTQuLjA4
ZTYzYWU5YjllMGFkN2IyYTY3ZTU3NGViNzllNTk5OGNhZTJhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtNDAsNiArNDAsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAg
IE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogICAgIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCisgICAgTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKwogICAgIFBsYXRmb3JtL0lQ
Qy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1l
bnRVbml4LmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTcx
ZmJkZTdmMzRjMzkxMGM0MTNkNTBlNzQwZDYxZmRlYjYxMzgyNi4uZWNiYWY1NjIyOGJmOWJjNzk0
NDUzMzUwOTU5ODVmYmRjNjYwY2E2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NzgsNiArODc4LDcgQEAKIAkJNDEwNDgyQ0QxRERE
MzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdv
cmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAgLyogUlRDTmV0d29yay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0Mx
REREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1NTUxRkEwRUE3
QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBM
aWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICov
OyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5ODFE
RTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJCTQxMzA3NUFB
MURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIwMDAzOUVDNjkg
LyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpAQCAtMzE3Niw2ICszMTc3LDggQEAKIAkJ
NDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5j
cHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8q
IE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBO
ZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDcxRjlG
RDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0aCA9IE5ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5jcHA7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3Jr
UlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENT
b2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MDQ1LDYgKzYwNDgsOCBAQAogCQkJCTQx
REM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5j
cHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZl
ci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5l
dHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBO
ZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1OUQxREU4NEZCMDAwMzlFQzY5IC8qIE5l
dHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDMxMSw2ICsxMDMxNiw3IEBACiAJ
CQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUgLyogTmV0d29ya1JUQ1By
b3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMTJCNTU1MUZB
MEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3Jr
UlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgx
RCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVudHJ5UG9pbnQu
bW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324986</attachid>
            <date>2017-10-26 04:18:55 -0700</date>
            <delta_ts>2017-10-26 04:36:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20171026131853.patch</filename>
            <type>text/plain</type>
            <size>18436</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0MjMzMzkzMzM5NjlkYWNk
ZjQ3ZTk2YzY0MWE5NGIyNTJiYTMwMTAuLjRmMDhjMTZmOWEzMjIwZThiMThkMjk3YzI5YTU0OTNk
ZGZiN2QwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTctMTAtMjYgIEFsZWphbmRy
byBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRD
UmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3JlYXRlIGFuIHNwZWNpZmljIENvY29hIGNsYXNzLCBmb3IgdGhlIG90
aGVyIHBsYXRmb3JtcyBhZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDogQ3JlYXRlIGFuIGFsaWFzIGNs
YXNzIG5hbWUgZGVmaW5lZCBwZXIgcGxhdGZvcm0gdG8gaW5zdGFudGlhdGUgdGhlIHJlc29sdmVy
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKTog
VXNlZCB0aGUgYWxpYXMgY2xhc3MgbmFtZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBj
b2RlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsIGFuZCBhZGQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBD
b2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3Ig
R1RLLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhl
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAx
Ny0xMC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TmV0d29yayBwcm9jZXNzIGNyYXNoIHVuZGVyIFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvclNpbmdsZUNoYWxsZW5nZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwCmluZGV4IGI2ZWFkY2Q4ZmJjNzQxNzIzZjQ1ZTg1Y2UyY2M1NWFhOWJk
OWU3ZTAuLmU4NzlkZjAxOTYzNzVlY2E5MjkzNmNiNDYyMThlYWE4YzcwNzQ0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
KyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0g
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVy
UGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGljIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAgICAgYXV0byB0
aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpAQCAtMTY0LDcg
KzE3MCw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1Nv
Y2tldE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAKIHZvaWQgTmV0d29ya1JUQ1Byb3Zp
ZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JU
Q1Jlc29sdmVyPihbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNz
ZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybT4oW3RoaXMsIGlkZW50aWZpZXJd
KE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChyZXN1
bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5jZWxsZWQpCiAgICAg
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2Vi
UlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBpZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAx
NmUuLjc3YjhkM2MxN2FiYzQzNTAyNGRjN2I1NDAyZWIyMGM1NTQ4ZGUxNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyLmNwcApAQCAtMzIsMzQgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUg
dHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQotewotICAg
IEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRv
bWFpbikgewotICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGlu
Zm8gaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0
PE5ldHdvcmtSVENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAg
Q0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJl
c3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7Ci0KLSAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNz
ZXMpOwotICAgIFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBh
ZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVm
IGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNz
ZXMsIGluZGV4KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAg
IGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBB
ZGRyZXNzKGFkZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxl
dGVkKGFkZHJlc3Nlcyk7Ci19Ci0KIE5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29s
dmVyKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewpAQCAtNjcsMjkgKzM5
LDEwIEBAIE5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdv
cmtSVENSZXNvbHZlcigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9z
dC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwot
ICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVy
KSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25v
d24pKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYg
YWRkcmVzcykKLXsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAg
IENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVk
TmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0Lmdl
dCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAg
Qm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwg
a0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Ci19Ci0KLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKLXsKLSAgICBDRkhv
c3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZI
b3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
bV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKLX0KLQogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6
OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRkcmVzc2Vz
KQogewogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5N2Nk
YThjNzIzYmRlMzVlNzI3OC4uZWRkYjBjOTZmNmQ4YWNkZGIwY2I2M2NjNDdiOTY1YTgzNmVmMjEw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBVU0UoTElCV0VCUlRD
KQogCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3Qu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNDIsMTYgKzQxLDE1IEBAIHB1YmxpYzoKICAgICB1c2luZyBD
b21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChBZGRyZXNzZXNP
ckVycm9yJiYpPjsKIAogICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9u
SGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CisgICAgdmlydHVhbCB+TmV0
d29ya1JUQ1Jlc29sdmVyKCk7CiAKLSAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVz
cyk7Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykgeyB9OworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgeyB9OwogCiAgICAgdm9p
ZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKIAotcHJp
dmF0ZToKK3Byb3RlY3RlZDoKICAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5k
bGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyM2Q4
MGM5OTc4ODI3NjI0NDA5OTE3MjAzMzU0NzA4ODY5YmY0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlw
ZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCit7Cisg
ICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKKworICAgIGlmIChlcnJvci0+
ZG9tYWluKSB7CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQg
aW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgorICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUKGluZm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nh
c3Q8TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EqPihpbmZvKTsKKworICAgIEJvb2xlYW4gcmVzdWx0
OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RH
ZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVk
QWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7
CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgIENG
RGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVk
QWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwor
ICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhy
dGM6OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKKyAgICB9CisgICAgcmVzb2x2ZXIt
PmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6TmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICA6IE5ldHdvcmtSVENSZXNvbHZlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
K3sKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6On5OZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YSgpCit7CisgICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIENGSG9zdFNl
dENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7CisgICAg
bV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBDRkhvc3RDbGllbnRDb250
ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAg
ICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsK
KyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIEJvb2xlYW4gcmVzdWx0ID0g
Q0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMs
IG51bGxwdHIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lk
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdG9wKCkKK3sKKyAgICBDRkhvc3RDYW5jZWxJbmZv
UmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2Vz
KTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9y
OjpDYW5jZWxsZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI1ZmRi
NjY4NzIxZTU4YTljYmQ1OGUwODk1ODY5MTE0ZDU4YTgzOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNF
KExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EgOiBwdWJsaWMgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYShDb21wbGV0aW9uSGFuZGxl
ciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKSBmaW5hbDsKKworICAgIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5h
bDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCBkMGMyODljNDU0YTE3OTZiM2MxZmE1MzgyZTM3ZWZkOGE0NmQ2
Nzk0Li4wOGU2M2FlOWI5ZTBhZDdiMmE2N2U1NzRlYjc5ZTU5OThjYWUyYTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTQwLDYgKzQwLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJD
RVMKICAgICBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKICAgICBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKIAorICAg
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisKICAgICBQbGF0
Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5jcHAKICAgICBQbGF0Zm9ybS9JUEMvdW5peC9B
dHRhY2htZW50VW5peC5jcHAKICAgICBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDk3MWZiZGU3ZjM0YzM5MTBjNDEzZDUwZTc0MGQ2MWZkZWI2MTM4MjYuLmVjYmFmNTYyMjhi
ZjliYzc5NDQ1MzM1MDk1OTg1ZmJkYzY2MGNhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODc4LDYgKzg3OCw3IEBACiAJCTQxMDQ4
MkNEMURERDMyNEMwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBS
VENOZXR3b3JrLmNwcCAqLzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05l
dHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMTJCNTU1
MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1
IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi87IH07CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0Rjcz
NjMgLyogTGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdv
cmsuaCAqLzsgfTsKIAkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2Nr
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
MDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwogCQk0
MTMwNzVBQTFERTg1RjMwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMxNzYsNiArMzE3Nyw4
IEBACiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2
Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJC
NTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5j
cHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5
ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLmg7IHBhdGgg
PSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQu
Y3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrUlRDU29ja2V0Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Nv
Y2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjA0NSw2ICs2MDQ4LDggQEAK
IAkJCQk0MURDNDU5ODFFM0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3Nh
Z2VzLmluICovLAogCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwICovLAogCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXIuaCAqLywKKwkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwICovLAorCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovLAogCQkJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVD
NjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovLAogCQkJCTQxMzA3NTlEMURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDU29ja2V0Lm1lc3NhZ2VzLmluICovLApAQCAtMTAzMTEsNiArMTAzMTYs
NyBAQAogCQkJCTQxREM0NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5ldHdv
cmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEy
QjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1
MDBGMzI4MUQgLyogTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRy
eVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324988</attachid>
            <date>2017-10-26 04:36:31 -0700</date>
            <delta_ts>2017-10-26 04:45:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20171026133629.patch</filename>
            <type>text/plain</type>
            <size>18470</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0MjMzMzkzMzM5NjlkYWNk
ZjQ3ZTk2YzY0MWE5NGIyNTJiYTMwMTAuLjRmMDhjMTZmOWEzMjIwZThiMThkMjk3YzI5YTU0OTNk
ZGZiN2QwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTctMTAtMjYgIEFsZWphbmRy
byBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRD
UmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3JlYXRlIGFuIHNwZWNpZmljIENvY29hIGNsYXNzLCBmb3IgdGhlIG90
aGVyIHBsYXRmb3JtcyBhZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDogQ3JlYXRlIGFuIGFsaWFzIGNs
YXNzIG5hbWUgZGVmaW5lZCBwZXIgcGxhdGZvcm0gdG8gaW5zdGFudGlhdGUgdGhlIHJlc29sdmVy
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKTog
VXNlZCB0aGUgYWxpYXMgY2xhc3MgbmFtZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBj
b2RlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsIGFuZCBhZGQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBD
b2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3Ig
R1RLLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhl
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAx
Ny0xMC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TmV0d29yayBwcm9jZXNzIGNyYXNoIHVuZGVyIFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvclNpbmdsZUNoYWxsZW5nZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwCmluZGV4IGI2ZWFkY2Q4ZmJjNzQxNzIzZjQ1ZTg1Y2UyY2M1NWFhOWJk
OWU3ZTAuLmQxMWM1Y2UxMzk5MTk0ZThlMjc0MTkyYTBiMzU0NDViZjJkMmMyNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
KyNpZiBQTEFURk9STShDT0NPQSkKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOworCit1
c2luZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29h
OworI2Vsc2UKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jl
c29sdmVyOworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhy
ZWFkPiBjcmVhdGVUaHJlYWQoKQogewogICAgIGF1dG8gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNy
ZWF0ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsKQEAgLTE2NCw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtS
VENQcm92aWRlcjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWlu
dDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVz
b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50
aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jl
c29sdmVyUGxhdGZvcm0+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFk
ZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5o
YXNWYWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gTmV0d29ya1JU
Q1Jlc29sdmVyOjpFcnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAgIG1fY29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpSZXNvbHZlZEFk
ZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAppbmRleCAzYzk5
ODdkMDQ4MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi43N2I4ZDNjMTdhYmM0MzUwMjRk
YzdiNTQwMmViMjBjNTU0OGRlMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKQEAgLTMyLDM0ICsz
Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUo
Q0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVh
bUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZv
LCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5kb21haW4pIHsKLSAgICAgICAgLy8gRklY
TUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0
aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7
Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihp
bmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRy
ZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgc2l6ZV90IGNvdW50
ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0
d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNv
dW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7Ci0gICAgICAgIGF1
dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+
KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBw
ZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRk
cikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOwotfQotCiBO
ZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQogICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKIHsKQEAgLTY3LDI5ICszOSwxMCBAQCBOZXR3b3JrUlRDUmVzb2x2
ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIoKQogewotICAg
IENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1
cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9o
b3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpVbmtub3duKSk7CiB9CiAKLXZvaWQgTmV0d29y
a1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCi17Ci0gICAgbV9ob3N0
ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRy
ZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNv
bnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhv
c3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBD
Rkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVu
dCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0
U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxw
dHIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotfQotCi12b2lkIE5ldHdv
cmtSVENSZXNvbHZlcjo6c3RvcCgpCi17Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24o
bV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVk
KSk7Ci19Ci0KIHZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9y
PFJUQ05ldHdvcms6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKIHsKICAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5oCmluZGV4IDFiY2Y3MzZlNzY3YTY3MDRiNWNlOTdjZGE4YzcyM2JkZTM1ZTcyNzguLmVkZGIw
Yzk2ZjZkOGFjZGRiMGNiNjNjYzQ3Yjk2NWE4MzZlZjIxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCkBA
IC0yOCw3ICsyOCw2IEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdv
cmsuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQy
LDE2ICs0MSwxNSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47CiAKICAgICBleHBs
aWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdv
cmtSVENSZXNvbHZlcigpOworICAgIHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwogCi0g
ICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpIHsgfTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpIHsgfTsKIAogICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3Rv
cjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAg
Q29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZI
b3N0UmVmPiBtX2hvc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjNkODBjOTk3ODgyNzYyNDQwOTkxNzIwMzM1
NDcwODg2OWJmNDgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCkBAIC0wLDAgKzEsOTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkTmFt
ZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3Ry
ZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQoreworICAgIEFTU0VSVF9VTlVTRUQodHlwZUlu
Zm8sICF0eXBlSW5mbyk7CisKKyAgICBpZiAoZXJyb3ItPmRvbWFpbikgeworICAgICAgICAvLyBG
SVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHByb3ZpZGVkIGlu
IHRoZSBjYWxsYmFjay4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChpbmZv
KTsKKyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hKj4oaW5mbyk7CisKKyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29s
dmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAm
cmVzdWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVf
dCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9y
PFJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBjb3VudDsgKytpbmRleCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFS
ZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAg
ICAgICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2Fk
ZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hl
Y2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy0+
c2luX2FkZHIpKSk7CisgICAgfQorICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsK
K30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNvbHZlckNvY29hKENv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVz
b2x2ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNv
bHZlckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2No
ZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NG
UnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBu
dWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3Rh
cnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0
Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlz
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9z
dC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRo
UnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRp
b24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgp
LCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNWZkYjY2ODcyMWU1OGE5Y2JkNThlMDg5NTg2
OTExNGQ1OGE4MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRl
ICJOZXR3b3JrUlRDUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIDog
cHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtSVENS
ZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRk
cmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggZDBj
Mjg5YzQ1NGExNzk2YjNjMWZhNTM4MmUzN2VmZDhhNDZkNjc5NC4uMDhlNjNhZTliOWUwYWQ3YjJh
NjdlNTc0ZWI3OWU1OTk4Y2FlMmE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC00MCw2
ICs0MCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorCiAgICAgUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1v
bml0b3IuY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAgICAg
UGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NzFmYmRlN2YzNGMzOTEwYzQx
M2Q1MGU3NDBkNjFmZGViNjEzODI2Li5lY2JhZjU2MjI4YmY5YmM3OTQ0NTMzNTA5NTk4NWZiZGM2
NjBjYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTg3OCw2ICs4NzgsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyog
UlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJ
CTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAg
LyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYy
MUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5
MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5
IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9u
aXRvci5jcHAgKi87IH07CkBAIC0zMTc2LDYgKzMxNzcsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5
RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZl
ci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyog
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0
NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYwNDUsNiArNjA0OCw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAw
QjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0
NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEy
QjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywK
KwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
aCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5j
cHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
aCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5t
ZXNzYWdlcy5pbiAqLywKQEAgLTEwMzExLDYgKzEwMzE2LDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2
RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8q
IE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBF
QTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENT
b2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0
QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICov
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324989</attachid>
            <date>2017-10-26 04:46:03 -0700</date>
            <delta_ts>2018-02-08 05:39:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20171026134601.patch</filename>
            <type>text/plain</type>
            <size>18567</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0MjMzMzkzMzM5NjlkYWNk
ZjQ3ZTk2YzY0MWE5NGIyNTJiYTMwMTAuLjRmMDhjMTZmOWEzMjIwZThiMThkMjk3YzI5YTU0OTNk
ZGZiN2QwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTctMTAtMjYgIEFsZWphbmRy
byBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRD
UmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3JlYXRlIGFuIHNwZWNpZmljIENvY29hIGNsYXNzLCBmb3IgdGhlIG90
aGVyIHBsYXRmb3JtcyBhZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDogQ3JlYXRlIGFuIGFsaWFzIGNs
YXNzIG5hbWUgZGVmaW5lZCBwZXIgcGxhdGZvcm0gdG8gaW5zdGFudGlhdGUgdGhlIHJlc29sdmVy
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKTog
VXNlZCB0aGUgYWxpYXMgY2xhc3MgbmFtZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBj
b2RlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsIGFuZCBhZGQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBD
b2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3Ig
R1RLLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhl
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAx
Ny0xMC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TmV0d29yayBwcm9jZXNzIGNyYXNoIHVuZGVyIFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvclNpbmdsZUNoYWxsZW5nZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwCmluZGV4IGI2ZWFkY2Q4ZmJjNzQxNzIzZjQ1ZTg1Y2UyY2M1NWFhOWJk
OWU3ZTAuLmU2YzA5NmMzZmMzYjkwYjc4OThiZmIxOWVjNmY2NjkzMDRiMDFjZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcApAQCAtNDAsOCArNDAsMTggQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQordXNpbmcgTmV0d29ya1JUQ1Jl
c29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTsKKyNlbHNlCit1c2luZyBO
ZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlcjsKKyNlbmRpZgor
CiBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFk
KCkKIHsKICAgICBhdXRvIHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2Vy
dmVyKCk7CkBAIC0xNjQsNyArMTc0LDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJl
Y2VpdmVOZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9p
ZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRD
UmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8g
cmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihb
dGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkgewogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6
OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlk
ZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKaW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3
MzExZjllNWNiMTZjM2ZmMDE2ZS4uNzdiOGQzYzE3YWJjNDM1MDI0ZGM3YjU0MDJlYjIwYzU1NDhk
ZTE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCkBAIC0zMiwzNCArMzIsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVm
LCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZv
aWQgKmluZm8pCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKLQot
ICAgIGlmIChlcnJvci0+ZG9tYWluKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRs
ZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGluZm8pOwotICAgIGF1dG8qIHJlc29s
dmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyKj4oaW5mbyk7Ci0KLSAgICBCb29s
ZWFuIHJlc3VsdDsKLSAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJyYXlS
ZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKLQotICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRDb3Vu
dChyZXNvbHZlZEFkZHJlc3Nlcyk7Ci0gICAgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4g
YWRkcmVzc2VzOwotICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsK
LQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewot
ICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRl
eChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBhdXRvKiBhZGRyZXNzID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRy
KGRhdGEpKTsKLSAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJ
UEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy0+c2luX2FkZHIpKSk7Ci0gICAgfQotICAg
IHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKLX0KLQogTmV0d29ya1JUQ1Jlc29sdmVy
OjpOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CiB7CkBAIC02NywyOSArMzksMTAgQEAgTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVz
b2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIAogTmV0d29ya1JU
Q1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKCkKIHsKLSAgICBDRkhvc3RVbnNjaGVkdWxl
RnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0cik7CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1f
Y29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChFcnJvcjo6VW5rbm93bikpOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rh
cnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQotewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0
Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlz
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9z
dC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRo
UnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKLSAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRp
b24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLX0KLQotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
b3AoKQotewotICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZI
b3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkpOwotfQotCiB2b2lkIE5l
dHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFk
ZHJlc3M+JiBhZGRyZXNzZXMpCiB7CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2
ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li5lZGRiMGM5NmY2ZDhhY2RkYjBjYjYz
Y2M0N2I5NjVhODM2ZWYyMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNiBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGSG9zdC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MiwxNiArNDEsMTUgQEAgcHVi
bGljOgogICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OwogCiAgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jl
c29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsK
KyAgICB2aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29u
c3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KSB7IH07CiAKICAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBB
ZGRyZXNzPiYpOwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIENvbXBsZXRpb25IYW5kbGVy
IG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzIzZDgwYzk5Nzg4Mjc2MjQ0MDk5MTcyMDMzNTQ3MDg4NjliZjQ4MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisK
KyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RS
ZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwg
dm9pZCAqaW5mbykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwor
CisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFu
ZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgYXV0byogcmVz
b2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSo+KGluZm8pOworCisg
ICAgQm9vbGVhbiByZXN1bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChD
RkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBzaXplX3QgY291bnQgPSBDRkFycmF5
R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOworICAgIFZlY3RvcjxSVENOZXR3b3JrOjpJUEFk
ZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShj
b3VudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5k
ZXgpIHsKKyAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1
ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKKyAgICAgICAgYXV0byogYWRkcmVz
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0
Qnl0ZVB0cihkYXRhKSk7CisgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0
d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3MtPnNpbl9hZGRyKSkpOworICAg
IH0KKyAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK05ldHdvcmtSVENS
ZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYShDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdv
cmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3Ao
bV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7
Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNvbnN0IFN0cmluZyYg
YWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAg
IENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVk
TmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0Lmdl
dCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAg
Qm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwg
a0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0b3AoKQoreworICAg
IENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6
OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYjVmZGI2Njg3MjFlNThhOWNiZDU4ZTA4OTU4NjkxMTRkNThhODM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29s
dmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSA6IHB1YmxpYyBOZXR3b3JrUlRD
UmVzb2x2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlckNvY29h
KENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpIGZp
bmFsOworCisgICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpIGZpbmFsOworICAg
IHZvaWQgc3RvcCgpIGZpbmFsOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+
IG1faG9zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJ
QldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGQwYzI4OWM0NTRhMTc5NmIzYzFm
YTUzODJlMzdlZmQ4YTQ2ZDY3OTQuLjA4ZTYzYWU5YjllMGFkN2IyYTY3ZTU3NGViNzllNTk5OGNh
ZTJhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDAsNiArNDAsOCBAQCBsaXN0KEFQ
UEVORCBXZWJLaXRfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Np
b25Tb3VwLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHRTb3VwLmNwcAogCisgICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5jcHAKKwogICAgIFBsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcAogICAgIFBs
YXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOTcxZmJkZTdmMzRjMzkxMGM0MTNkNTBlNzQwZDYxZmRlYjYx
MzgyNi4uZWNiYWY1NjIyOGJmOWJjNzk0NDUzMzUwOTU5ODVmYmRjNjYwY2E2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NzgsNiAr
ODc4LDcgQEAKIAkJNDEwNDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxRERE
MkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRG
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAq
LzsgfTsKIAkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0
NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDEx
MkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQz
QUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIy
MjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMg
LyogTGliV2ViUlRDTmV0d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkg
LyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5jcHAgKi87IH07CiAJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9u
aXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMwNzU5QTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpA
QCAtMzE3Niw2ICszMTc3LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05l
dHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyog
TmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE5ldHdvcmtSVENSZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJC
NTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJX
ZWJSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJU
Q05ldHdvcmsuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5l
dHdvcmtSVENTb2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TmV0d29ya1JUQ1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1NvY2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURF
ODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
MDQ1LDYgKzYwNDgsOCBAQAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3Jr
UlRDUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1
IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3
ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlG
RDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1
OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3
NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1
OUQxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBA
IC0xMDMxMSw2ICsxMDMxNiw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5l
dHdvcmtSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1
MDBGMzI4MkUgLyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURF
ODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBO
ZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333372</attachid>
            <date>2018-02-08 05:39:39 -0800</date>
            <delta_ts>2018-02-08 06:02:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180208143937.patch</filename>
            <type>text/plain</type>
            <size>34120</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwMjBlOGUyN2QyNGMw
YzM3YjNkMWQ5NGYwMDM4NjUxNzQ4ZmUyMS4uNThhNDdhOTc4MGMwZWEyOGExNDU4MTI4YzBjMTFl
MzU4MWI3OWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6
IEFkZCB0aGUgbmV3IG1ldGhvZHMsIHdlIGhhdmUgdG8gaW1wbGVtZW50IHRoZXNlIG1ldGhvZHMg
YW5kIG1vdmUgdGhlCisgICAgICAgIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGNvZGUgaGVyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKTogRHVt
bXkgbWV0aG9kLCBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZl
UXVldWU6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRO
U1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1TdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmg6IE5ldyBjbGFzcyBpbmhl
cml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZSBjbGFzcywgYWRkaW5nCisgICAgICAgIGEg
SGFzTWFwIHdpdGggdGhlIGFjdGl2ZSBvcGVyYXRpb25zLCBpdCBhbGxvd3Mgc3RvcHBpbmcgdGhl
bS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKTogQ2FsbGVkIHdoZW4gdGhl
IHJlc3VsdCBhZGRyZXNzIGZyb20gdGhlIHNvdXAgcGxhdGZvcm0gaXMgcmVhZHksCisgICAgICAg
IHNlbmRzIHRoZSBhZGRyZXNzIHRvIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgb2YgdGhlIG9ic2Vy
dmVyLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNv
bHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB3aXRoIHRoZSBzb3VwIGxpYnJhcnku
CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9ybVN0b3BSZXNv
bHZlKTogU3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEKKyAgICAg
ICAgR0NhbmNlbGxhYmxlLgorCiAyMDE4LTAyLTA2ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3Rl
YWRAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMg
ZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE3NWQ2ZjczZDJjYjZkNTJlNTgzYTIwNDc3MzQ3MDc0ZDFl
MjEyZDkuLjU5OGJmYWIxMWViYjRhMTJjN2RmOWM3ZmNlYzM4OTI5ODkwODBlYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTgtMDItMDggIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4
QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jl
YXRlIGFuIHNwZWNpZmljIENvY29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBp
biB0aGUgYmFzZSBjbGFzcywgbWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAg
ICAgIGFnbm9zdGljIGFuZCBkZXBlbmRlbnQgb24gRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzIHdoaWNo
IGVuY2Fwc3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDogQ3JlYXRlIGFuIGFsaWFz
IGNsYXNzIG5hbWUgZGVmaW5lZCBwZXIgcGxhdGZvcm0gdG8gaW5zdGFudGlhdGUgdGhlIHJlc29s
dmVyLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVy
KTogVXNlZCB0aGUgYWxpYXMgY2xhc3MgbmFtZSBhbmQgcmVjZWl2ZSBhIG5ldyBJUEFkZHJlc3Mg
Y2xhc3MgdGhhdCBpcyBub3QKKyAgICAgICAgZGVwZW5kZW50IG9uIHJ0YyBsaWJ3ZWJydGMgbGli
cmFyeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBVc2UgdGhlIEROU1Jlc29s
dmVRdWV1ZSBhcyB0aGUgYmFzZSBjbGFzcworICAgICAgICB0byBpbXBsZW1lbnQgdGhlIHBsYXRm
b3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4g
QWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbgorICAgICAgICB0byB0
aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JU
Q1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTog
UmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRo
ZSBETlNSZXNvbHZlUXVldWUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNv
bHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgYW5kIHVz
ZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAgICAgICAgc29sdXRpb24gdG8g
aW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBBdm9pZCB1c2luZyB0aGUgSVBB
ZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBjbGFzc2VzIHRvIG1ha2UKKyAg
ICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFtZSByZXNvbHV0aW9uLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogTWFrZSB0aGlzIGNsYXNz
IHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERp
dHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAgICAgTm93IHRoaXMgY2xh
c3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2RzIHRoYXQgdXNlIEROU1Jlc29s
dmVRdWV1ZSwgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TUmVzb2x2ZVF1
ZXVlCisgICAgICAgIGNsYXNzIGluIHRoZSBmdXR1cmUgYW5kIHJlbW92ZSB0aGlzIGNsYXNzLCBt
YWtpbmcgc3VyZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0
Zm9ybSBkaXJlY3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxh
dGZvcm1HVEsuY21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdU
Sy4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgt
MDItMDYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBS
ZW1vdmUgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAppbmRleCBhOGMy
ZGY0MGMzYmZiYWM1ZjVjMzkyOWJjYTMzOTMwMGYwYTAyNjE4Li5mNGY1NTQ1ZGIzNWViNmE2N2I0
ZThlNmFiMDQ2NzlkZDJkN2JmMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCkBAIC0yNywxMSArMjcsMjEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKIAorI2lmIChQTEFU
Rk9STShHVEspKSB8fCAoUExBVEZPUk0oV1BFKSkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVT
b3VwLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiAoUExB
VEZPUk0oR1RLKSkgfHwgKFBMQVRGT1JNKFdQRSkpCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0
Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisjZWxzZQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVl
UGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWU7CisjZW5kaWYKKwogLy8gV2hlbiByZXNvbHZlIHF1
ZXVlIGlzIGVtcHR5LCB3ZSBmaXJlIGFzeW5jIHJlc29sdXRpb24gcmVxdWVzdHMgaW1tZWRpYXRl
bHkgKHdoaWNoIGlzIGltcG9ydGFudCBpZiB0aGUgcHJlZmV0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGhv
dmVyaW5nKS4KIC8vIEJ1dCBkdXJpbmcgcGFnZSBwYXJzaW5nLCB3ZSBzaG91bGQgY29hbGVzY2Ug
aWRlbnRpY2FsIHJlcXVlc3RzIHRvIGF2b2lkIHN0cmVzc2luZyBvdXQgdGhlIEROUyByZXNvbHZl
ci4KIHN0YXRpYyBjb25zdCBpbnQgZ05hbWVzVG9SZXNvbHZlSW1tZWRpYXRlbHkgPSA0OwpAQCAt
NTIsNyArNjIsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyByZXNvbHZpbmdSZXRyeURlbGF5IHsg
MTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+IHF1ZXVlOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7
CiAKICAgICByZXR1cm4gcXVldWU7CiB9CkBAIC0xMjUsNCArMTM1LDE0IEBAIHZvaWQgRE5TUmVz
b2x2ZVF1ZXVlOjp0aW1lckZpcmVkKCkKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QocmVz
b2x2aW5nUmV0cnlEZWxheSk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBwbGF0Zm9y
bVJlc29sdmUoaG9zdG5hbWUsIG9ic2VydmVyKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWU6
OnN0b3BSZXNvbHZlKE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBwbGF0Zm9ybVN0b3BSZXNv
bHZlKG9ic2VydmVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKaW5kZXggZDJhN2E3
N2I4YmNjNDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uYTUwOGU5YmY2OTgwNDM2YWEwOGFk
ZWUxMGFhZjk2YzBlZjhkM2RkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yOSwxOCArMjksNDQgQEAKIAogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IElQQWRkcmVzcyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgSVBBZGRyZXNzKGNvbnN0IHN0cnVj
dCBzb2NrYWRkcl9pbiogYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNz
LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9ICph
ZGRyZXNzOworICAgIH0KKworICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiogZ2V0KCkgeyBy
ZXR1cm4gJm1fYWRkcmVzczsgfTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4g
bV9hZGRyZXNzOworfTsKKwogY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIGNsYXNzIE9ic2Vy
dmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0
OworICAgICAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxJUEFkZHJlc3M+
JikgeyB9OworICAgICAgICB2aXJ0dWFsIHVpbnQ2NF90IGdldElkKCkgPSAwOworICAgIH07CisK
KyAgICBETlNSZXNvbHZlUXVldWUoKTsKKwogICAgIHN0YXRpYyBETlNSZXNvbHZlUXVldWUmIHNp
bmdsZXRvbigpOwogCisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9i
c2VydmVyKik7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShPYnNlcnZlciopOwogICAgIHZvaWQgYWRk
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50
KCkKICAgICB7CkBAIC00OCwxMyArNzQsMTIgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAKICAg
ICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpOwogICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYpOwotCisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1TdG9wUmVzb2x2ZShPYnNlcnZlciopID0gMDsKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIAog
ICAgIFRpbWVyIG1fdGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDk3OWE1N2Q5ZDgyMGVkMTNiMDAyZmQxY2QyZDdjODZlOGUz
NzIwMmMuLjA3MGVmZjE2Y2JkY2U3Mjg4MWFkY2E1NDQ0ZGYyNmE1ODM3YmJmZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgi
CiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEwMSw2ICsxMDIsMTYg
QEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQogICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9z
dEFkZHJlc3NlcywgMCk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29s
dmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgRE5TUmVzb2x2ZVF1ZXVlOjpPYnNlcnZl
ciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBE
TlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtU3RvcFJlc29sdmUoT2JzZXJ2ZXIqIC8qIG9ic2VydmVy
ICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgcHJlZmV0Y2hETlMoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmluZGV4
IDVhMzFmNTk4NGMwY2U4ZWZhZTg5ODFkOTNhMjgzMGNhMDcxY2EwYzQuLjkyMTlhYjYyZmM4YjM3
ZmE0NjY2MjYyODUyMzI3MGE1OTM1MDYzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKQEAgLTQzLDYgKzQzLDE2IEBAIHZvaWQgRE5T
UmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAq
LykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxh
dGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8sIEROU1Jlc29sdmVRdWV1
ZTo6T2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKiAv
KiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIHByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlYTNmY2U0YzViNmExODllNTg2
MzY5NWQ5YTY0YTk3NDZhMzEzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgewor
cHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgT2JzZXJ2
ZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtU3RvcFJlc29sdmUoT2JzZXJ2ZXIqKSBmaW5h
bDsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8R0NhbmNlbGxhYmxlPj4gbV9vYnNl
cnZlcnM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvRE5TU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvRE5TU291cC5jcHAKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZmOGY2
Mzk1MC4uMTc0NTAwN2RmOWNkOWVhYTc2MDdlNmQ5ZDlkZDgzZGIzYWYzNzk0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApAQCAtMjYs
NyArMjYsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE5TLmgiCi0jaW5j
bHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5o
IgogCiAjaWYgVVNFKFNPVVApCiAKQEAgLTkxLDYgKzkxLDI3IEBAIHN0YXRpYyB2b2lkIHJlc29s
dmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCiAgICAgRE5TUmVzb2x2ZVF1
ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKIH0KIAorc3RhdGljIHZv
aWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjayhTb3VwQWRkcmVzcyogYWRkcmVzcywgZ3Vp
bnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNf
T0spCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChkYXRhKTsKKyAgICBhdXRvKiBvYnNl
cnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2ZXIqPihkYXRhKTsKKwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKworICAgIGlmICghc291cF9hZGRyZXNzX2lzX3Jl
c29sdmVkKGFkZHJlc3MpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgbGVuOworICAgIGF1
dG8qIGlwYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2lu
Kj4oc291cF9hZGRyZXNzX2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgYWRkcmVz
c2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBhZGRyZXNzKSk7CisKKyAg
ICBvYnNlcnZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKIHZvaWQgRE5TUmVzb2x2ZVF1
ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtOTgsNiArMTE5LDIzIEBAIHZvaWQgRE5TUmVzb2x2ZVF1
ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKICAgICBzb3VwX3Nl
c3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBo
b3N0bmFtZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRy
KTsKIH0KIAordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZVF1ZXVlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gYWRkcmVzcyA9IGFkb3B0
R1JlZihzb3VwX2FkZHJlc3NfbmV3KGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIDApKTsKKyAgICBh
dXRvIGNhbmNlbGxhYmxlID0gYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpOworICAgIHNv
dXBfYWRkcmVzc19yZXNvbHZlX2FzeW5jKGFkZHJlc3MuZ2V0KCksIHNvdXBfc2Vzc2lvbl9nZXRf
YXN5bmNfY29udGV4dChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24o
KSksIGNhbmNlbGxhYmxlLmdldCgpLCByZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrLCBvYnNl
cnZlcik7CisKKyAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXItPmdldElkKCksIFdURk1vdmUo
Y2FuY2VsbGFibGUpKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9ybVN0
b3BSZXNvbHZlKE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBpZiAoYXV0byBjYW5jZWxsYWJs
ZSA9IG1fb2JzZXJ2ZXJzLnRha2Uob2JzZXJ2ZXItPmdldElkKCkpKQorICAgICAgICBnX2NhbmNl
bGxhYmxlX2NhbmNlbChjYW5jZWxsYWJsZS5nZXQoKSk7Cit9CisKIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENQcm92aWRlci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYyYTE0MDdjMGYwYmNj
ZjIzNzIxMi4uMzg3NDIwZTAzZDk0MWExNDk2NWUxYWU4YTExMzIyMWJkYmFkODkwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwCkBAIC00Miw2ICs0MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0g
PSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTsKKyNlbHNlCit1c2luZyBOZXR3b3JrUlRDUmVzb2x2
ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlcjsKKyNlbmRpZgorCiBzdGF0aWMgaW5saW5l
IHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkKIHsKICAgICBhdXRv
IHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCk7CkBAIC0xNjQs
MTMgKzE3MCwyMSBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6ZGlkUmVjZWl2ZU5ldHdvcmtS
VENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubgogCiB2b2lkIE5ldHdvcmtSVENQ
cm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRk
cmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byByZXNvbHZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0+KGlkZW50aWZpZXIsIFt0
aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6
OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlk
ZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fY29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRS
ZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0
byYgcGxhdGZvcm1BZGRyZXNzZXMgPSByZXN1bHQudmFsdWUoKS5nZXQoKTsKKyAgICAgICAgc2l6
ZV90IGNvdW50ID0gcGxhdGZvcm1BZGRyZXNzZXMuc2l6ZSgpOworICAgICAgICBWZWN0b3I8V2Vi
S2l0OjpSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICAgICAgYWRkcmVzc2Vz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgIGZvciAoYXV0byBhZGRy
ZXNzIDogcGxhdGZvcm1BZGRyZXNzZXMpCisgICAgICAgICAgICBhZGRyZXNzZXMudW5jaGVja2Vk
QXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLmdldCgp
LT5zaW5fYWRkcikpKTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3Nlcyks
IGlkZW50aWZpZXIpOwogICAgIH0pOwogICAgIHJlc29sdmVyLT5zdGFydChhZGRyZXNzKTsKICAg
ICBtX3Jlc29sdmVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShyZXNvbHZlcikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHAKaW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3MzExZjllNWNiMTZjM2ZmMDE2
ZS4uMmMwZTI3YmZkODc5ZjQ2NzU3MmEyOTg4YjgxM2E2MmViYzUwODQ3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwCkBAIC0zMiw2OCArMzIsMzIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUg
dHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQotewotICAg
IEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRv
bWFpbikgewotICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGlu
Zm8gaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0
PE5ldHdvcmtSVENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAg
Q0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJl
c3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7Ci0KLSAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNz
ZXMpOwotICAgIFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBh
ZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVm
IGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNz
ZXMsIGluZGV4KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAg
IGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBB
ZGRyZXNzKGFkZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxl
dGVkKGFkZHJlc3Nlcyk7Ci19Ci0KLU5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29s
dmVyKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgOiBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorTmV0d29ya1JUQ1Jlc29s
dmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
IHsKIH0KIAogTmV0d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKCkKIHsKLSAg
ICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRD
dXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1f
aG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6VW5rbm93bikpOwogfQogCi12b2lkIE5ldHdv
cmtSVENSZXNvbHZlcjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQordm9pZCBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYg
YWRkcmVzc2VzKQogewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0g
ICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyIH07Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2
ZWROYW1lLCAmY29udGV4dCk7Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3Qu
Z2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAg
ICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgp
LCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0p
OwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCit2b2lkIE5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIENGSG9zdENhbmNl
bEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRy
ZXNzZXMpOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBs
ZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
RXJyb3I6OkNhbmNlbGxlZCkpOworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xl
dG9uKCkucmVzb2x2ZShhZGRyZXNzLCB0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2
ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRkcmVz
c2VzKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQogewotICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2
ZVF1ZXVlOjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZSh0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oCmluZGV4IDFiY2Y3MzZlNzY3YTY3MDRiNWNlOTdjZGE4
YzcyM2JkZTM1ZTcyNzguLjI5OGJlMWYwOTVlZjU0NmViNmQxZDAwMGE1ZmI1MmRhMmFiYzhiNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlci5oCkBAIC0yNywzMSArMjcsMzIgQEAKIAogI2lmIFVTRShMSUJXRUJS
VEMpCiAKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKICNpbmNsdWRlICJSVENOZXR3b3Jr
LmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK2NsYXNzIE5ldHdvcmtS
VENSZXNvbHZlciA6IHB1YmxpYyBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVyIHsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwgQ2FuY2VsbGVkIH07CiAK
LSAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3Jh
cHBlcjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPj4sIEVycm9yPjsKKyAgICB1
c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPj4sIEVycm9yPjsKICAgICB1c2luZyBDb21w
bGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChBZGRyZXNzZXNPckVy
cm9yJiYpPjsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFu
ZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CisgICAgZXhwbGljaXQgTmV0d29y
a1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyJiYpOwor
ICAgIHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwogCi0gICAgdm9pZCBzdGFydChjb25z
dCBTdHJpbmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCBz
dGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAK
LSAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYp
OworICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+Jikg
ZmluYWw7CisgICAgdWludDY0X3QgZ2V0SWQoKSBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH07CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwog
ICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgUmV0YWluUHRy
PENGSG9zdFJlZj4gbV9ob3N0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU2YjNlYjFlZjdjYmQ3ODhjNDFiNjMy
ZTI3NTQxOTk5ZjFjMzM2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApAQCAtMCwwICsxLDkz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSA8d3Rm
L0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9pZCByZXNvbHZl
ZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBD
RlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHR5
cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAgICAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRl
ZCBpbiB0aGUgY2FsbGJhY2suCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQo
aW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSo+KGluZm8pOworCisgICAgQm9vbGVhbiByZXN1bHQ7CisgICAgQ0ZBcnJheVJlZiBy
ZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJl
ZiwgJnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBz
aXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOworICAgIFZl
Y3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZE
YXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsK
KyAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNv
Y2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisgICAgICAgIGFkZHJlc3Nlcy51
bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAg
cmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYTo6TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICA6IE5ldHdvcmtSVENSZXNvbHZlcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkKK3sKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6On5OZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYSgpCit7CisgICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5n
ZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAg
IENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2
b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3Mp
Cit7CisgICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBDRkhvc3RD
bGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIgfTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZj
b250ZXh0KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIEJvb2xlYW4g
cmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RB
ZGRyZXNzZXMsIG51bGxwdHIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwor
fQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdG9wKCkKK3sKKyAgICBDRkhvc3RD
YW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0
QWRkcmVzc2VzKTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9j
b21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWI1ZmRiNjY4NzIxZTU4YTljYmQ1OGUwODk1ODY5MTE0ZDU4YTgzOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlckNvY29hLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgor
CisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgOiBwdWJsaWMgTmV0d29ya1JUQ1Jlc29sdmVy
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYShDb21wbGV0
aW9uSGFuZGxlciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKSBmaW5hbDsKKwor
ICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5MzA0YzVjODUxNTYwODk4MTZhYzk0NTAxZGYz
NzBhNTE4MDFhOWJiLi5jMDgxZmVjMDRkY2NlYTM1NDRmZTljOGMyYWNlODE4MDA2NjRkYWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTQ4LDYgKzQ4LDggQEAgbGlzdChBUFBFTkQgV2Vi
S2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5j
cHAKICAgICBOZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5j
cHAKIAorICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisK
ICAgICBQbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5jcHAKICAgICBQbGF0Zm9ybS9J
UEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKICAgICBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGViNWUyYzZjODVkMTJhMWIyZWUyMWE4ZGY2NDgyNTg2Y2UyNWY3YjEuLjM3
Zjg4NzY1MTIwMzg2ZmEwZWQ2YjM0MzcxN2NlOGM0MjZmNGMzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTA4LDYgKzkwOCw3IEBA
CiAJCTQxMDQ4MkNEMURERDMyNEMwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJGQjUwMEYw
MDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQw
IC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJ
CTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNB
QjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi87IH07CisJCTQxMTJCNTU1MUZB
MEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5
ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcx
QkE2MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldl
YlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdv
cmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICov
OyB9OwogCQk0MTMwNzVBQTFERTg1RjMwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUEx
REU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMyNjUs
NiArMzI2Niw4IEBACiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtS
VENSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3
b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5
RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0ODFGOUZE
M0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0
d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3Jr
Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtS
VENTb2NrZXQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2Nr
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAz
OUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIwMCw2ICs2
MjAzLDggQEAKIAkJCQk0MURDNDU5ODFFM0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3Zp
ZGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3
b3JrUlRDUmVzb2x2ZXIuY3BwICovLAogCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywKKwkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyog
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovLAorCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovLAogCQkJCTQxMzA3NTk4MURFODRG
QjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5OTFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovLAogCQkJCTQxMzA3NTlEMURFODRG
QjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0Lm1lc3NhZ2VzLmluICovLApAQCAtMTA1Mjks
NiArMTA1MzQsNyBAQAogCQkJCTQxREM0NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRD
UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJF
IC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAz
OUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBF
MTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1Nl
cnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333374</attachid>
            <date>2018-02-08 06:02:12 -0800</date>
            <delta_ts>2018-02-08 06:16:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180208150210.patch</filename>
            <type>text/plain</type>
            <size>34163</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwMjBlOGUyN2QyNGMw
YzM3YjNkMWQ5NGYwMDM4NjUxNzQ4ZmUyMS4uNThhNDdhOTc4MGMwZWEyOGExNDU4MTI4YzBjMTFl
MzU4MWI3OWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6
IEFkZCB0aGUgbmV3IG1ldGhvZHMsIHdlIGhhdmUgdG8gaW1wbGVtZW50IHRoZXNlIG1ldGhvZHMg
YW5kIG1vdmUgdGhlCisgICAgICAgIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGNvZGUgaGVyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKTogRHVt
bXkgbWV0aG9kLCBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZl
UXVldWU6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRO
U1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1TdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmg6IE5ldyBjbGFzcyBpbmhl
cml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZSBjbGFzcywgYWRkaW5nCisgICAgICAgIGEg
SGFzTWFwIHdpdGggdGhlIGFjdGl2ZSBvcGVyYXRpb25zLCBpdCBhbGxvd3Mgc3RvcHBpbmcgdGhl
bS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKTogQ2FsbGVkIHdoZW4gdGhl
IHJlc3VsdCBhZGRyZXNzIGZyb20gdGhlIHNvdXAgcGxhdGZvcm0gaXMgcmVhZHksCisgICAgICAg
IHNlbmRzIHRoZSBhZGRyZXNzIHRvIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgb2YgdGhlIG9ic2Vy
dmVyLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNv
bHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB3aXRoIHRoZSBzb3VwIGxpYnJhcnku
CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9ybVN0b3BSZXNv
bHZlKTogU3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEKKyAgICAg
ICAgR0NhbmNlbGxhYmxlLgorCiAyMDE4LTAyLTA2ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3Rl
YWRAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMg
ZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE3NWQ2ZjczZDJjYjZkNTJlNTgzYTIwNDc3MzQ3MDc0ZDFl
MjEyZDkuLjU5OGJmYWIxMWViYjRhMTJjN2RmOWM3ZmNlYzM4OTI5ODkwODBlYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTgtMDItMDggIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4
QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jl
YXRlIGFuIHNwZWNpZmljIENvY29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBp
biB0aGUgYmFzZSBjbGFzcywgbWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAg
ICAgIGFnbm9zdGljIGFuZCBkZXBlbmRlbnQgb24gRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzIHdoaWNo
IGVuY2Fwc3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDogQ3JlYXRlIGFuIGFsaWFz
IGNsYXNzIG5hbWUgZGVmaW5lZCBwZXIgcGxhdGZvcm0gdG8gaW5zdGFudGlhdGUgdGhlIHJlc29s
dmVyLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVy
KTogVXNlZCB0aGUgYWxpYXMgY2xhc3MgbmFtZSBhbmQgcmVjZWl2ZSBhIG5ldyBJUEFkZHJlc3Mg
Y2xhc3MgdGhhdCBpcyBub3QKKyAgICAgICAgZGVwZW5kZW50IG9uIHJ0YyBsaWJ3ZWJydGMgbGli
cmFyeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBVc2UgdGhlIEROU1Jlc29s
dmVRdWV1ZSBhcyB0aGUgYmFzZSBjbGFzcworICAgICAgICB0byBpbXBsZW1lbnQgdGhlIHBsYXRm
b3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4g
QWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbgorICAgICAgICB0byB0
aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JU
Q1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTog
UmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRo
ZSBETlNSZXNvbHZlUXVldWUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNv
bHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgYW5kIHVz
ZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAgICAgICAgc29sdXRpb24gdG8g
aW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBBdm9pZCB1c2luZyB0aGUgSVBB
ZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBjbGFzc2VzIHRvIG1ha2UKKyAg
ICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFtZSByZXNvbHV0aW9uLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogTWFrZSB0aGlzIGNsYXNz
IHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERp
dHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAgICAgTm93IHRoaXMgY2xh
c3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2RzIHRoYXQgdXNlIEROU1Jlc29s
dmVRdWV1ZSwgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TUmVzb2x2ZVF1
ZXVlCisgICAgICAgIGNsYXNzIGluIHRoZSBmdXR1cmUgYW5kIHJlbW92ZSB0aGlzIGNsYXNzLCBt
YWtpbmcgc3VyZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0
Zm9ybSBkaXJlY3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxh
dGZvcm1HVEsuY21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdU
Sy4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgt
MDItMDYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBS
ZW1vdmUgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAppbmRleCBhOGMy
ZGY0MGMzYmZiYWM1ZjVjMzkyOWJjYTMzOTMwMGYwYTAyNjE4Li5mNGY1NTQ1ZGIzNWViNmE2N2I0
ZThlNmFiMDQ2NzlkZDJkN2JmMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCkBAIC0yNywxMSArMjcsMjEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKIAorI2lmIChQTEFU
Rk9STShHVEspKSB8fCAoUExBVEZPUk0oV1BFKSkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVT
b3VwLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiAoUExB
VEZPUk0oR1RLKSkgfHwgKFBMQVRGT1JNKFdQRSkpCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0
Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisjZWxzZQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVl
UGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWU7CisjZW5kaWYKKwogLy8gV2hlbiByZXNvbHZlIHF1
ZXVlIGlzIGVtcHR5LCB3ZSBmaXJlIGFzeW5jIHJlc29sdXRpb24gcmVxdWVzdHMgaW1tZWRpYXRl
bHkgKHdoaWNoIGlzIGltcG9ydGFudCBpZiB0aGUgcHJlZmV0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGhv
dmVyaW5nKS4KIC8vIEJ1dCBkdXJpbmcgcGFnZSBwYXJzaW5nLCB3ZSBzaG91bGQgY29hbGVzY2Ug
aWRlbnRpY2FsIHJlcXVlc3RzIHRvIGF2b2lkIHN0cmVzc2luZyBvdXQgdGhlIEROUyByZXNvbHZl
ci4KIHN0YXRpYyBjb25zdCBpbnQgZ05hbWVzVG9SZXNvbHZlSW1tZWRpYXRlbHkgPSA0OwpAQCAt
NTIsNyArNjIsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyByZXNvbHZpbmdSZXRyeURlbGF5IHsg
MTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+IHF1ZXVlOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7
CiAKICAgICByZXR1cm4gcXVldWU7CiB9CkBAIC0xMjUsNCArMTM1LDE0IEBAIHZvaWQgRE5TUmVz
b2x2ZVF1ZXVlOjp0aW1lckZpcmVkKCkKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QocmVz
b2x2aW5nUmV0cnlEZWxheSk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBwbGF0Zm9y
bVJlc29sdmUoaG9zdG5hbWUsIG9ic2VydmVyKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWU6
OnN0b3BSZXNvbHZlKE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBwbGF0Zm9ybVN0b3BSZXNv
bHZlKG9ic2VydmVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKaW5kZXggZDJhN2E3
N2I4YmNjNDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uM2U0NDJiZjJhMjM1MDgwYWFlMTZj
MWQzZTkxMGZiMTk0NDRhOGU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yOSwxOCArMjksNDUgQEAKIAogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IElQQWRkcmVzcyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgSVBBZGRyZXNzKGNvbnN0IHN0cnVj
dCBzb2NrYWRkcl9pbiogYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNz
LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9ICph
ZGRyZXNzOworICAgIH0KKworICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiogZ2V0KCkgeyBy
ZXR1cm4gJm1fYWRkcmVzczsgfTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4g
bV9hZGRyZXNzOworfTsKKwogY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIGNsYXNzIE9ic2Vy
dmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0
OworICAgICAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxJUEFkZHJlc3M+
JikgeyB9OworICAgICAgICB2aXJ0dWFsIHVpbnQ2NF90IGdldElkKCkgPSAwOworICAgIH07CisK
KyAgICBETlNSZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNSZXNvbHZlUXVldWUoKSA9
IGRlZmF1bHQ7CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaW5nbGV0b24oKTsKIAor
ICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciopOworICAg
IHZvaWQgc3RvcFJlc29sdmUoT2JzZXJ2ZXIqKTsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewpAQCAt
NDgsMTMgKzc1LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7Ci0KICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCiAgICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKTsKICAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
LQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSwgT2JzZXJ2ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RvcFJlc29sdmUo
T2JzZXJ2ZXIqKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3Rp
bWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlND
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNw
cAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4wNzBlZmYx
NmNiZGNlNzI4ODFhZGNhNTQ0NGRmMjZhNTgzN2JiZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMDEsNiArMTAyLDE2IEBAIHZvaWQgRE5TUmVz
b2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKICAgICBD
Rkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDAp
OwogfQogCit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmlu
ZyYgLyogaG9zdG5hbWUgKi8sIEROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2ZXIqIC8qIG9ic2VydmVy
ICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAppbmRleCA1YTMxZjU5ODRjMGNl
OGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li45MjE5YWI2MmZjOGIzN2ZhNDY2NjI2Mjg1MjMy
NzBhNTkzNTA2M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvRE5TQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0ROU0N1cmwuY3BwCkBAIC00Myw2ICs0MywxNiBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6
cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAordm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShj
b25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCBETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVyKiAv
KiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jl
c29sdmVRdWV1ZTo6cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8p
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBwcmVmZXRjaEROUyhjb25zdCBT
dHJpbmcmIC8qIGhvc3RuYW1lICovKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVl
U291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVR
dWV1ZVNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWEzZmNlNGM1YjZhMTg5ZTU4NjM2OTVkOWE2NGE5NzQ2
YTMxMzFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJE
TlNSZXNvbHZlUXVldWUuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jl
c29sdmVRdWV1ZVNvdXAgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBE
TlNSZXNvbHZlUXVldWVTb3VwKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHZvaWQgcGxh
dGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKikgZmluYWw7Cisg
ICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKikgZmluYWw7CisKKyAgICBIYXNo
TWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2ZXJzOworfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Nv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3Bw
CmluZGV4IGNhMTE0NTdkZGQyMjMzYzc0M2ExOGNkZjgzODM2OTBmZjhmNjM5NTAuLjE3NDUwMDdk
ZjljZDllYWE3NjA3ZTZkOWQ5ZGQ4M2RiM2FmMzc5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIKIAogI2lmIFVTRShT
T1VQKQogCkBAIC05MSw2ICs5MSwyNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNv
dXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQogICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0
aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9p
ZCogZGF0YSkKK3sKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgYXV0byogb2JzZXJ2ZXIgPSBzdGF0aWNf
Y2FzdDxETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVyKj4oZGF0YSk7CisKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoMSk7CisKKyAgICBpZiAoIXNvdXBfYWRkcmVzc19pc19yZXNvbHZlZChhZGRyZXNz
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGxlbjsKKyAgICBhdXRvKiBpcGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KHNvdXBfYWRkcmVz
c19nZXRfc29ja2FkZHIoYWRkcmVzcywgJmxlbikpOworICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRB
cHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGlwYWRkcmVzcykpOworCisgICAgb2JzZXJ2ZXItPmNv
bXBsZXRlZChhZGRyZXNzZXMpOworfQorCiB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKQEAgLTk4LDYgKzExOSwyMyBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiAgICAgc291cF9zZXNzaW9uX3ByZWZldGNo
X2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9y
Q3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgp
LmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7CiB9CiAKK3ZvaWQg
RE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUsIEROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRy
ZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJs
ZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVz
b2x2ZV9hc3luYyhhZGRyZXNzLmdldCgpLCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5n
ZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJs
ZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAg
bV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyLT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNl
cnZlciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX29ic2VydmVy
cy50YWtlKG9ic2VydmVyLT5nZXRJZCgpKSkKKyAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwo
Y2FuY2VsbGFibGUuZ2V0KCkpOworfQorCiB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIuLjM4NzQy
MGUwM2Q5NDFhMTQ5NjVlMWFlOGExMTMyMjFiZGJhZDg5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cApAQCAtNDIsNiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0gPSBO
ZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAgICAgYXV0byB0aHJlYWQgPSBydGM6
OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpAQCAtMTY0LDEzICsxNzAsMjEgQEAg
dm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVOZXR3b3JrUlRDU29ja2V0TWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0
ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsK
LSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+
KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3Im
JiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihpZGVudGlmaWVyLCBbdGhpcywgaWRlbnRpZmll
cl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5jZWxsZWQpCiAg
ICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBpZGVudGlmaWVyKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNz
KHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7CisgICAgICAgIGF1dG8mIHBsYXRmb3JtQWRk
cmVzc2VzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCk7CisgICAgICAgIHNpemVfdCBjb3VudCA9IHBs
YXRmb3JtQWRkcmVzc2VzLnNpemUoKTsKKyAgICAgICAgVmVjdG9yPFdlYktpdDo6UlRDTmV0d29y
azo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3IgKGF1dG8gYWRkcmVzcyA6IHBsYXRmb3Jt
QWRkcmVzc2VzKQorICAgICAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3
b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy5nZXQoKS0+c2luX2FkZHIpKSk7
CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2Vi
UlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVyKTsK
ICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZlcnMu
YWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCmlu
ZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjJjMGUyN2JmZDg3
OWY0Njc1NzJhMjk4OGI4MTNhNjJlYmM1MDg0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApAQCAt
MzIsNjggKzMyLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCByZXNv
bHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25z
dCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKLXsKLSAgICBBU1NFUlRfVU5VU0VE
KHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5kb21haW4pIHsKLSAgICAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92
aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVz
b2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAgIENGQXJyYXlSZWYgcmVz
b2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYs
ICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgc2l6
ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKLSAgICBWZWN0
b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAgYWRkcmVzc2VzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0
YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7Ci0g
ICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2Nr
YWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAgICBhZGRyZXNzZXMudW5j
aGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNz
LT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMp
OwotfQotCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JU
Q1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7CiB9CiAKIE5ldHdv
cmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hl
ZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZS
dW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6
OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpj
b21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKIHsK
LSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgIENGSG9zdENsaWVu
dENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9
OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRl
eHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxv
b3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQm9vbGVhbiByZXN1
bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJl
c3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAg
aWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIp
KQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9KTsKIH0KIAotdm9pZCBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlv
bihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKLSAgICBp
ZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikp
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpDYW5jZWxs
ZWQpKTsKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUo
YWRkcmVzcywgdGhpcyk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQo
Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKK3ZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKIHsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgYWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xl
dG9uKCkuc3RvcFJlc29sdmUodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4
Li4yOThiZTFmMDk1ZWY1NDZlYjZkMWQwMDBhNWZiNTJkYTJhYmM4YjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXIuaApAQCAtMjcsMzEgKzI3LDMyIEBACiAKICNpZiBVU0UoTElCV0VCUlRDKQogCisjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgotI2luY2x1ZGUg
PENGTmV0d29yay9DRkhvc3QuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIE5ldHdvcmtSVENSZXNvbHZlciB7CitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgOiBw
dWJsaWMgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBFcnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9OwogCi0gICAgdXNpbmcgQWRk
cmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVj
dG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47CisgICAgdXNpbmcgQWRkcmVzc2Vz
T3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFdl
YkNvcmU6OklQQWRkcmVzcz4+LCBFcnJvcj47CiAgICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIg
PSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47CiAKLSAg
ICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAg
fk5ldHdvcmtSVENSZXNvbHZlcigpOworICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcih1
aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2aXJ0dWFsIH5O
ZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRy
ZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29uc3QgU3Ry
aW5nJiBhZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9pZCBjb21w
bGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKKyAgICB2b2lkIGNv
bXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYpIGZpbmFsOworICAgIHVp
bnQ2NF90IGdldElkKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9OwogCi1wcml2YXRl
OgorcHJvdGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBDb21wbGV0aW9u
SGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1f
aG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBlNmIzZWIxZWY3Y2JkNzg4YzQxYjYzMmUyNzU0MTk5OWYxYzMz
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJl
ZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAq
ZXJyb3IsIHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJ
bmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJWE1FOiBOZWVk
IHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxi
YWNrLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGluZm8pOworICAgIGF1
dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EqPihpbmZv
KTsKKworICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNz
ZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0g
Q0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8UlRDTmV0d29y
azo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoY291bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50
OyArK2luZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5
R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8q
IGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENG
RGF0YUdldEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5k
KFdlYkNvcmU6OklQQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29sdmVyLT5jb21w
bGV0ZWQoYWRkcmVzc2VzKTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtS
VENSZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9
CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQor
eworICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9v
cEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGll
bnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9z
dCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRk
cmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBj
b250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZI
b3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAg
Q0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJl
bnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9z
dFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxs
cHRyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29s
dXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Cisg
ICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRs
ZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2Fu
Y2VsbGVkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJ
QldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNWZkYjY2ODcy
MWU1OGE5Y2JkNThlMDg5NTg2OTExNGQ1OGE4MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCkBA
IC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJX
RUJSVEMpCisKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgPENG
TmV0d29yay9DRkhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0
KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1H
VEsuY21ha2UKaW5kZXggOTMwNGM1Yzg1MTU2MDg5ODE2YWM5NDUwMWRmMzcwYTUxODAxYTliYi4u
YzA4MWZlYzA0ZGNjZWEzNTQ0ZmU5YzhjMmFjZTgxODAwNjY0ZGFhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC00OCw2ICs0OCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAg
ICAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiAgICAgTmV0d29y
a1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKKyAgICBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorCiAgICAgUGxhdGZvcm0v
SVBDL2dsaWIvR1NvY2tldE1vbml0b3IuY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNo
bWVudFVuaXguY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBl
YjVlMmM2Yzg1ZDEyYTFiMmVlMjFhOGRmNjQ4MjU4NmNlMjVmN2IxLi4zN2Y4ODc2NTEyMDM4NmZh
MGVkNmIzNDM3MTdjZThjNDI2ZjRjMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwOCw2ICs5MDgsNyBAQAogCQk0MTA0ODJDRDFE
REQzMjRDMDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0
d29yay5jcHAgKi87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3Jr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJD
QzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBF
QTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYg
LyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8q
IExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmgg
Ki87IH07CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4
MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1
QUExREU4NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjY1LDYgKzMyNjYsOCBAQAog
CQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUg
LyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE5ldHdvcmtSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFG
OUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0
d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdv
cmtSVENTb2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JU
Q1NvY2tldC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDAsNiArNjIwMyw4IEBACiAJCQkJ
NDFEQzQ1OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5p
biAqLywKIAkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcCAqLywKIAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmggKi8sCisJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcCAqLywKKwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8q
IE5ldHdvcmtSVENTb2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5tZXNzYWdlcy5pbiAqLywKQEAgLTEwNTI5LDYgKzEwNTM0LDcgQEAK
IAkJCQk0MURDNDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRD
UHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUx
RkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdv
cmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMy
ODFEIC8qIE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM4MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2lu
dC5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333375</attachid>
            <date>2018-02-08 06:16:40 -0800</date>
            <delta_ts>2018-02-08 06:52:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180208151638.patch</filename>
            <type>text/plain</type>
            <size>34154</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwMjBlOGUyN2QyNGMw
YzM3YjNkMWQ5NGYwMDM4NjUxNzQ4ZmUyMS4uNThhNDdhOTc4MGMwZWEyOGExNDU4MTI4YzBjMTFl
MzU4MWI3OWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6
IEFkZCB0aGUgbmV3IG1ldGhvZHMsIHdlIGhhdmUgdG8gaW1wbGVtZW50IHRoZXNlIG1ldGhvZHMg
YW5kIG1vdmUgdGhlCisgICAgICAgIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGNvZGUgaGVyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKTogRHVt
bXkgbWV0aG9kLCBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZl
UXVldWU6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRO
U1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1TdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmg6IE5ldyBjbGFzcyBpbmhl
cml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZSBjbGFzcywgYWRkaW5nCisgICAgICAgIGEg
SGFzTWFwIHdpdGggdGhlIGFjdGl2ZSBvcGVyYXRpb25zLCBpdCBhbGxvd3Mgc3RvcHBpbmcgdGhl
bS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKTogQ2FsbGVkIHdoZW4gdGhl
IHJlc3VsdCBhZGRyZXNzIGZyb20gdGhlIHNvdXAgcGxhdGZvcm0gaXMgcmVhZHksCisgICAgICAg
IHNlbmRzIHRoZSBhZGRyZXNzIHRvIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgb2YgdGhlIG9ic2Vy
dmVyLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNv
bHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB3aXRoIHRoZSBzb3VwIGxpYnJhcnku
CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9ybVN0b3BSZXNv
bHZlKTogU3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEKKyAgICAg
ICAgR0NhbmNlbGxhYmxlLgorCiAyMDE4LTAyLTA2ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3Rl
YWRAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMg
ZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE3NWQ2ZjczZDJjYjZkNTJlNTgzYTIwNDc3MzQ3MDc0ZDFl
MjEyZDkuLjU5OGJmYWIxMWViYjRhMTJjN2RmOWM3ZmNlYzM4OTI5ODkwODBlYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTgtMDItMDggIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4
QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jl
YXRlIGFuIHNwZWNpZmljIENvY29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBp
biB0aGUgYmFzZSBjbGFzcywgbWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAg
ICAgIGFnbm9zdGljIGFuZCBkZXBlbmRlbnQgb24gRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzIHdoaWNo
IGVuY2Fwc3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDogQ3JlYXRlIGFuIGFsaWFz
IGNsYXNzIG5hbWUgZGVmaW5lZCBwZXIgcGxhdGZvcm0gdG8gaW5zdGFudGlhdGUgdGhlIHJlc29s
dmVyLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVy
KTogVXNlZCB0aGUgYWxpYXMgY2xhc3MgbmFtZSBhbmQgcmVjZWl2ZSBhIG5ldyBJUEFkZHJlc3Mg
Y2xhc3MgdGhhdCBpcyBub3QKKyAgICAgICAgZGVwZW5kZW50IG9uIHJ0YyBsaWJ3ZWJydGMgbGli
cmFyeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBVc2UgdGhlIEROU1Jlc29s
dmVRdWV1ZSBhcyB0aGUgYmFzZSBjbGFzcworICAgICAgICB0byBpbXBsZW1lbnQgdGhlIHBsYXRm
b3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4g
QWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbgorICAgICAgICB0byB0
aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JU
Q1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTog
UmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRo
ZSBETlNSZXNvbHZlUXVldWUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNv
bHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgYW5kIHVz
ZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAgICAgICAgc29sdXRpb24gdG8g
aW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBBdm9pZCB1c2luZyB0aGUgSVBB
ZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBjbGFzc2VzIHRvIG1ha2UKKyAg
ICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFtZSByZXNvbHV0aW9uLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogTWFrZSB0aGlzIGNsYXNz
IHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERp
dHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAgICAgTm93IHRoaXMgY2xh
c3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2RzIHRoYXQgdXNlIEROU1Jlc29s
dmVRdWV1ZSwgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TUmVzb2x2ZVF1
ZXVlCisgICAgICAgIGNsYXNzIGluIHRoZSBmdXR1cmUgYW5kIHJlbW92ZSB0aGlzIGNsYXNzLCBt
YWtpbmcgc3VyZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0
Zm9ybSBkaXJlY3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxh
dGZvcm1HVEsuY21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdU
Sy4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgt
MDItMDYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBS
ZW1vdmUgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAppbmRleCBhOGMy
ZGY0MGMzYmZiYWM1ZjVjMzkyOWJjYTMzOTMwMGYwYTAyNjE4Li5mNGY1NTQ1ZGIzNWViNmE2N2I0
ZThlNmFiMDQ2NzlkZDJkN2JmMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCkBAIC0yNywxMSArMjcsMjEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKIAorI2lmIChQTEFU
Rk9STShHVEspKSB8fCAoUExBVEZPUk0oV1BFKSkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVT
b3VwLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiAoUExB
VEZPUk0oR1RLKSkgfHwgKFBMQVRGT1JNKFdQRSkpCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0
Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisjZWxzZQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVl
UGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWU7CisjZW5kaWYKKwogLy8gV2hlbiByZXNvbHZlIHF1
ZXVlIGlzIGVtcHR5LCB3ZSBmaXJlIGFzeW5jIHJlc29sdXRpb24gcmVxdWVzdHMgaW1tZWRpYXRl
bHkgKHdoaWNoIGlzIGltcG9ydGFudCBpZiB0aGUgcHJlZmV0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGhv
dmVyaW5nKS4KIC8vIEJ1dCBkdXJpbmcgcGFnZSBwYXJzaW5nLCB3ZSBzaG91bGQgY29hbGVzY2Ug
aWRlbnRpY2FsIHJlcXVlc3RzIHRvIGF2b2lkIHN0cmVzc2luZyBvdXQgdGhlIEROUyByZXNvbHZl
ci4KIHN0YXRpYyBjb25zdCBpbnQgZ05hbWVzVG9SZXNvbHZlSW1tZWRpYXRlbHkgPSA0OwpAQCAt
NTIsNyArNjIsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyByZXNvbHZpbmdSZXRyeURlbGF5IHsg
MTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+IHF1ZXVlOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7
CiAKICAgICByZXR1cm4gcXVldWU7CiB9CkBAIC0xMjUsNCArMTM1LDE0IEBAIHZvaWQgRE5TUmVz
b2x2ZVF1ZXVlOjp0aW1lckZpcmVkKCkKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QocmVz
b2x2aW5nUmV0cnlEZWxheSk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBwbGF0Zm9y
bVJlc29sdmUoaG9zdG5hbWUsIG9ic2VydmVyKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWU6
OnN0b3BSZXNvbHZlKE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBwbGF0Zm9ybVN0b3BSZXNv
bHZlKG9ic2VydmVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKaW5kZXggZDJhN2E3
N2I4YmNjNDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uMzM3NGIzMGI4ZjNhNWFiNzdhM2U1
YmMzZDI1NGQ2ZWY4Yzg2ZWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yOSwxOCArMjksNDUgQEAKIAogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IElQQWRkcmVzcyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgSVBBZGRyZXNzKGNvbnN0IHN0cnVj
dCBzb2NrYWRkcl9pbiogYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNz
LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9ICph
ZGRyZXNzOworICAgIH0KKworICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiogZ2V0KCkgeyBy
ZXR1cm4gJm1fYWRkcmVzczsgfTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4g
bV9hZGRyZXNzOworfTsKKwogY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIGNsYXNzIE9ic2Vy
dmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0
OworICAgICAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxJUEFkZHJlc3M+
JikgeyB9OworICAgICAgICB2aXJ0dWFsIHVpbnQ2NF90IGdldElkKCkgPSAwOworICAgIH07CisK
KyAgICBETlNSZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNSZXNvbHZlUXVldWUoKSA9
IGRlZmF1bHQ7CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaW5nbGV0b24oKTsKIAor
ICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciopOworICAg
IHZvaWQgc3RvcFJlc29sdmUoT2JzZXJ2ZXIqKTsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewpAQCAt
NDgsMTMgKzc1LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7Ci0KICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCiAgICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKTsKICAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
LQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiwgT2JzZXJ2
ZXIqKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RvcFJlc29sdmUoT2JzZXJ2ZXIq
KSB7IH07CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3RpbWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAppbmRleCA5
NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4wNzBlZmYxNmNiZGNlNzI4
ODFhZGNhNTQ0NGRmMjZhNTgzN2JiZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRO
Uy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMDEsNiArMTAyLDE2IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKICAgICBDRkhvc3RTdGFy
dEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDApOwogfQogCit2
b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9z
dG5hbWUgKi8sIEROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9y
bVN0b3BSZXNvbHZlKE9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgx
ZDkzYTI4MzBjYTA3MWNhMGM0Li45MjE5YWI2MmZjOGIzN2ZhNDY2NjI2Mjg1MjMyNzBhNTkzNTA2
M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5T
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1
cmwuY3BwCkBAIC00Myw2ICs0MywxNiBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAordm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJp
bmcmIC8qIGhvc3RuYW1lICovLCBETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVyKiAvKiBvYnNlcnZl
ciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1
ZTo6cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIC8q
IGhvc3RuYW1lICovKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ZWEzZmNlNGM1YjZhMTg5ZTU4NjM2OTVkOWE2NGE5NzQ2YTMxMzFiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0RO
U1Jlc29sdmVRdWV1ZVNvdXAuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1
ZVNvdXAgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBETlNSZXNvbHZl
UXVldWVTb3VwKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNv
bHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBw
bGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2ZXJzOworfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmluZGV4IGNh
MTE0NTdkZGQyMjMzYzc0M2ExOGNkZjgzODM2OTBmZjhmNjM5NTAuLjE3NDUwMDdkZjljZDllYWE3
NjA3ZTZkOWQ5ZGQ4M2RiM2FmMzc5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5o
IgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIKIAogI2lmIFVTRShTT1VQKQogCkBA
IC05MSw2ICs5MSwyNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNz
KiwgZ3VpbnQsIHZvaWQqKQogICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVt
ZW50UmVxdWVzdENvdW50KCk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVy
Q2FsbGJhY2soU291cEFkZHJlc3MqIGFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkK
K3sKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlQoZGF0YSk7CisgICAgYXV0byogb2JzZXJ2ZXIgPSBzdGF0aWNfY2FzdDxETlNS
ZXNvbHZlUXVldWU6Ok9ic2VydmVyKj4oZGF0YSk7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBB
ZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
MSk7CisKKyAgICBpZiAoIXNvdXBfYWRkcmVzc19pc19yZXNvbHZlZChhZGRyZXNzKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaW50IGxlbjsKKyAgICBhdXRvKiBpcGFkZHJlc3MgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KHNvdXBfYWRkcmVzc19nZXRfc29j
a2FkZHIoYWRkcmVzcywgJmxlbikpOworICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoV2Vi
Q29yZTo6SVBBZGRyZXNzKGlwYWRkcmVzcykpOworCisgICAgb2JzZXJ2ZXItPmNvbXBsZXRlZChh
ZGRyZXNzZXMpOworfQorCiB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAg
LTk4LDYgKzExOSwyMyBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCiAgICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwg
bnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2
ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jl
c29sdmVRdWV1ZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRyZXNzX25ldyho
b3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0
R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3lu
YyhhZGRyZXNzLmdldCgpLCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0
ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwg
cmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAgbV9vYnNlcnZl
cnMuYWRkKG9ic2VydmVyLT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7Cit9CisKK3Zv
aWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciogb2Jz
ZXJ2ZXIpCit7CisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX29ic2VydmVycy50YWtlKG9i
c2VydmVyLT5nZXRJZCgpKSkKKyAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwoY2FuY2VsbGFi
bGUuZ2V0KCkpOworfQorCiB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4
IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIuLjM4NzQyMGUwM2Q5NDFh
MTQ5NjVlMWFlOGExMTMyMjFiZGJhZDg5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDIs
NiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
K3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRD
UmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpU
aHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAgICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6
Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpAQCAtMTY0LDEzICsxNzAsMjEgQEAgdm9pZCBOZXR3
b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVOZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVy
KHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRv
IHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBp
ZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQp
IG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtS
VENSZXNvbHZlclBsYXRmb3JtPihpZGVudGlmaWVyLCBbdGhpcywgaWRlbnRpZmllcl0oTmV0d29y
a1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJy
b3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAg
ICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVz
b2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52
YWx1ZSgpKSwgaWRlbnRpZmllcik7CisgICAgICAgIGF1dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0g
cmVzdWx0LnZhbHVlKCkuZ2V0KCk7CisgICAgICAgIHNpemVfdCBjb3VudCA9IHBsYXRmb3JtQWRk
cmVzc2VzLnNpemUoKTsKKyAgICAgICAgVmVjdG9yPFdlYktpdDo6UlRDTmV0d29yazo6SVBBZGRy
ZXNzPiBhZGRyZXNzZXM7CisgICAgICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGNvdW50KTsKKworICAgICAgICBmb3IgKGF1dG8gYWRkcmVzcyA6IHBsYXRmb3JtQWRkcmVzc2Vz
KQorICAgICAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFk
ZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy5nZXQoKS0+c2luX2FkZHIpKSk7CisKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2
ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVyKTsKICAgICB9KTsK
ICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50
aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4
N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjJjMGUyN2JmZDg3OWY0Njc1NzJh
Mjk4OGI4MTNhNjJlYmM1MDg0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIsNjggKzMy
LDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUo
Q0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVh
bUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZv
LCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5kb21haW4pIHsKLSAgICAgICAgLy8gRklY
TUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0
aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7
Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihp
bmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRy
ZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgc2l6ZV90IGNvdW50
ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0
d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNv
dW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7Ci0gICAgICAgIGF1
dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+
KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBw
ZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRk
cikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOwotfQotCi1O
ZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVy
KHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNv
bHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21S
dW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVm
YXVsdE1vZGUpOwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBs
ZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
RXJyb3I6OlVua25vd24pKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNv
bnN0IFN0cmluZyYgYWRkcmVzcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKIHsKLSAgICBtX2hv
c3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFk
ZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgIENGSG9zdENsaWVudENvbnRleHQg
Y29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIENG
SG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOwotICAg
IENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJy
ZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhv
c3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVs
bHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRD
UmVzb2x2ZXI6OnN0b3AoKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0
cmluZyYgYWRkcmVzcykKIHsKLSAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3Qu
Z2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKKyAg
ICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUoYWRkcmVzcywg
dGhpcyk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVj
dG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKK3ZvaWQgTmV0d29ya1JUQ1Jl
c29sdmVyOjpzdG9wKCkKIHsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRk
cmVzc2VzIH0pOworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuc3Rv
cFJlc29sdmUodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4yOThiZTFm
MDk1ZWY1NDZlYjZkMWQwMDBhNWZiNTJkYTJhYmM4YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAt
MjcsMzEgKzI3LDMyIEBACiAKICNpZiBVU0UoTElCV0VCUlRDKQogCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgotI2luY2x1ZGUgPENGTmV0d29y
ay9DRkhvc3QuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5l
dHdvcmtSVENSZXNvbHZlciB7CitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBFcnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9OwogCi0gICAgdXNpbmcgQWRkcmVzc2VzT3JF
cnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFJUQ05l
dHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47CisgICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9
IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OklQ
QWRkcmVzcz4+LCBFcnJvcj47CiAgICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47CiAKLSAgICBleHBsaWNp
dCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdvcmtS
VENSZXNvbHZlcigpOworICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBp
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrUlRD
UmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAg
ICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRy
ZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9pZCBjb21wbGV0ZWQoY29u
c3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKKyAgICB2b2lkIGNvbXBsZXRlZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYpIGZpbmFsOworICAgIHVpbnQ2NF90IGdl
dElkKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9OwogCi1wcml2YXRlOgorcHJvdGVj
dGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBDb21wbGV0aW9uSGFuZGxlciBt
X2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBlNmIzZWIxZWY3Y2JkNzg4YzQxYjYzMmUyNzU0MTk5OWYxYzMzNmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgorCisj
aWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVm
LCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZv
aWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKKwor
ICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRs
ZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgorICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGluZm8pOworICAgIGF1dG8qIHJlc29s
dmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EqPihpbmZvKTsKKworICAg
IEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZB
cnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdl
dENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRy
ZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291
bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4
KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVB
dEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5
dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6
OklQQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRk
cmVzc2VzKTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNvbHZl
ckNvY29hKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3
b3JrUlRDUmVzb2x2ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdv
cmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENG
SG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJl
bnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0
LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0
Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVh
dGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0g
eyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xp
ZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2No
ZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NG
UnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5m
b1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9o
b3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNWZkYjY2ODcyMWU1OGE5Y2Jk
NThlMDg5NTg2OTExNGQ1OGE4MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisK
KyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgPENGTmV0d29yay9D
Rkhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5l
dHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0
cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKK3ByaXZhdGU6
CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggOTMwNGM1Yzg1MTU2MDg5ODE2YWM5NDUwMWRmMzcwYTUxODAxYTliYi4uYzA4MWZlYzA0
ZGNjZWEzNTQ0ZmU5YzhjMmFjZTgxODAwNjY0ZGFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC00OCw2ICs0OCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mv
c291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorCiAgICAgUGxhdGZvcm0vSVBDL2dsaWIv
R1NvY2tldE1vbml0b3IuY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXgu
Y3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYjVlMmM2Yzg1
ZDEyYTFiMmVlMjFhOGRmNjQ4MjU4NmNlMjVmN2IxLi4zN2Y4ODc2NTEyMDM4NmZhMGVkNmIzNDM3
MTdjZThjNDI2ZjRjMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTkwOCw2ICs5MDgsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBG
MDA2RDAgLyogUlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAg
Ki87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJU
Q05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJ
CTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAw
MDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYz
MDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3
b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjY1LDYgKzMyNjYsOCBAQAogCQk0MTA0ODJD
QzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29y
a1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtS
VENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBF
Njc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdv
cmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIy
NjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMw
NzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2Nr
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5o
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDAsNiArNjIwMyw4IEBACiAJCQkJNDFEQzQ1OTgx
RTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJ
CQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywK
IAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8s
CisJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcCAqLywKKwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtS
VENTb2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5tZXNzYWdlcy5pbiAqLywKQEAgLTEwNTI5LDYgKzEwNTM0LDcgQEAKIAkJCQk0MURD
NDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAw
RTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEy
QjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2Nr
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5l
dHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4
MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBT
b3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333376</attachid>
            <date>2018-02-08 06:52:05 -0800</date>
            <delta_ts>2018-02-09 01:16:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180208155203.patch</filename>
            <type>text/plain</type>
            <size>38559</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwMjBlOGUyN2QyNGMw
YzM3YjNkMWQ5NGYwMDM4NjUxNzQ4ZmUyMS4uMGFiYzZjODUyOWJkZTgzN2UzYTYyZjdjZjU4N2I5
MDFkNTVlZTQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVl
dWVDRi5oOiBBZGQgdGhlIG5ldyBtZXRob2RzLCB3ZSBoYXZlIHRvIGltcGxlbWVudCB0aGVzZSBt
ZXRob2RzIGFuZCBtb3ZlCisgICAgICAgIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjb2Rl
IGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtUmVzb2x2ZSk6
IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaDogTmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNz
LCBhZGRpbmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0
IGFsbG93cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBwbGF0Zm9y
bSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBsZXRpb24g
aGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdp
dGggdGhlIHNvdXAgbGlicmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBw
cm9jZXNzIHdpdGggYQorICAgICAgICBHQ2FuY2VsbGFibGUuCisKIDIwMTgtMDItMDYgIERvbiBP
bG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBSZW1vdmUgV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTc1ZDZmNzNkMmNiNmQ1
MmU1ODNhMjA0NzczNDcwNzRkMWUyMTJkOS4uNTk4YmZhYjExZWJiNGExMmM3ZGY5YzdmY2VjMzg5
Mjk4OTA4MGVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxOC0wMi0wOCAgQWxlamFu
ZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtS
VENSZXNvbHZlciBwb3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzg4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDcmVhdGUgYW4gc3BlY2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0
ZSB0aGUgZ2VuZXJpYyBjb2RlIGluIHRoZSBiYXNlIGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxl
bWVudGF0aW9uIHBvcnQKKyAgICAgICAgYWdub3N0aWMgYW5kIGRlcGVuZGVudCBvbiBETlNSZXNv
bHZlUXVldWUgY2xhc3Mgd2hpY2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBk
ZXRhaWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwOiBDcmVhdGUgYW4gYWxpYXMgY2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBp
bnN0YW50aWF0ZSB0aGUgcmVzb2x2ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92
aWRlcjo6Y3JlYXRlUmVzb2x2ZXIpOiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNl
aXZlIGEgbmV3IElQQWRkcmVzcyBjbGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQg
b24gcnRjIGxpYndlYnJ0YyBsaWJyYXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNv
ZGUuIFVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGFzIHRoZSBiYXNlIGNsYXNzCisgICAgICAgIHRv
IGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBpbiB0aGUgZGVmYXVsdCBzdGFy
dCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHJlc29sdmUgb3Bl
cmF0aW9uCisgICAgICAgIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JU
Q1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50aWZpZXIgaW4gdGhl
IGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6On5O
ZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBBZGQgYSBuZXcgaW1w
bGVtZW50YXRpb24gdXNpbmcgdGhlIEROU1Jlc29sdmVRdWV1ZSBjbGFzcy4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKTogRGl0dG8KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg6IFJlbW92ZSB0aGUgcGxhdGZvcm0g
c3BlY2lmaWMgY29kZSBhbmQgdXNlIHRoZSBETlNSZXNvbHZlUXVldWUgZm9yIGEgZ2VuZXJhbAor
ICAgICAgICBzb2x1dGlvbiB0byBpbXBsZW1lbnQgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUu
IEF2b2lkIHVzaW5nIHRoZSBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkZXBlbmRzIG9uIGxpYndlcnRj
IGNsYXNzZXMgdG8gbWFrZQorICAgICAgICBpdCBtb3JlIGdlbmVyYWwgcmVnYXJkaW5nIEROUyBu
YW1lIHJlc29sdXRpb24uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3Rh
cnQpOiBNYWtlIHRoaXMgY2xhc3MgdmlydHVhbC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JU
Q1Jlc29sdmVyOjpzdG9wKTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwLgor
ICAgICAgICBOb3cgdGhpcyBjbGFzcyBvdmVycmlkZXMgdGhlIHN0YXJ0IGFuZCBzdG9wIG1ldGhv
ZHMgdGhhdCB1c2UgRE5TUmVzb2x2ZVF1ZXVlLCBjb2NvYSBpbXBsZW1lbnRhdGlvbiBzaG91bGQg
dXNlIHRoZSBETlNSZXNvbHZlUXVldWUKKyAgICAgICAgY2xhc3MgaW4gdGhlIGZ1dHVyZSBhbmQg
cmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2luZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMg
Y2xhc3MgaXMgaW4gdGhlIHBsYXRmb3JtIGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUg
ZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZl
ciBjb21waWxhdGlvbiBmb3IgR1RLLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBj
b21waWxhdGlvbi4KKwogMjAxOC0wMi0wNiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNv
bnkuY29tPgogCiAgICAgICAgIFJlbW92ZSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIGRpcmVj
dG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZl
UXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVmNWMzOTI5YmNhMzM5MzAwZjBhMDI2MTgu
LmY0ZjU1NDVkYjM1ZWI2YTY3YjRlOGU2YWIwNDY3OWRkMmQ3YmYyYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3
LDExICsyNywyMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVR
dWV1ZS5oIgogCisjaWYgKFBMQVRGT1JNKEdUSykpIHx8IChQTEFURk9STShXUEUpKQorI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIChQTEFURk9STShHVEspKSB8fCAoUExBVEZPUk0oV1BFKSkKK3VzaW5n
IEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlU291cDsKKyNlbHNlCit1
c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZTsKKyNlbmRpZgor
CiAvLyBXaGVuIHJlc29sdmUgcXVldWUgaXMgZW1wdHksIHdlIGZpcmUgYXN5bmMgcmVzb2x1dGlv
biByZXF1ZXN0cyBpbW1lZGlhdGVseSAod2hpY2ggaXMgaW1wb3J0YW50IGlmIHRoZSBwcmVmZXRj
aCBpcyB0cmlnZ2VyZWQgYnkgaG92ZXJpbmcpLgogLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcs
IHdlIHNob3VsZCBjb2FsZXNjZSBpZGVudGljYWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5n
IG91dCB0aGUgRE5TIHJlc29sdmVyLgogc3RhdGljIGNvbnN0IGludCBnTmFtZXNUb1Jlc29sdmVJ
bW1lZGlhdGVseSA9IDQ7CkBAIC01Miw3ICs2Miw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHJl
c29sdmluZ1JldHJ5RGVsYXkgeyAxMDBfbXMgfTsKIAogRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jl
c29sdmVRdWV1ZT4gcXVldWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVR
dWV1ZVBsYXRmb3JtPiBxdWV1ZTsKIAogICAgIHJldHVybiBxdWV1ZTsKIH0KQEAgLTEyNSw0ICsx
MzUsMTQgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQoKQogICAgICAgICBtX3Rp
bWVyLnN0YXJ0T25lU2hvdChyZXNvbHZpbmdSZXRyeURlbGF5KTsKIH0KIAordm9pZCBETlNSZXNv
bHZlUXVldWU6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgT2JzZXJ2ZXIqIG9ic2Vy
dmVyKQoreworICAgIHBsYXRmb3JtUmVzb2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2
b2lkIEROU1Jlc29sdmVRdWV1ZTo6c3RvcFJlc29sdmUoT2JzZXJ2ZXIqIG9ic2VydmVyKQorewor
ICAgIHBsYXRmb3JtU3RvcFJlc29sdmUob2JzZXJ2ZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jl
c29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZl
UXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQxYzA1YWJiMTg2NWQ3ZTJiZDJlZjBiOGFhLi4z
ZTQ0MmJmMmEyMzUwODBhYWUxNmMxZDNlOTEwZmIxOTQ0NGE4ZTQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKQEAgLTI5LDE4ICsy
OSw0NSBAQAogCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVk
ZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgSVBBZGRyZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJ
UEFkZHJlc3MoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAg
ICAgICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNv
Y2thZGRyX2luKiBnZXQoKSB7IHJldHVybiAmbV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAg
IHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJlc3M7Cit9OworCiBjbGFzcyBETlNSZXNvbHZlUXVl
dWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+OwogCiBwdWJs
aWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZWQoY29u
c3QgVmVjdG9yPElQQWRkcmVzcz4mKSB7IH07CisgICAgICAgIHZpcnR1YWwgdWludDY0X3QgZ2V0
SWQoKSA9IDA7CisgICAgfTsKKworICAgIEROU1Jlc29sdmVRdWV1ZSgpOworICAgIHZpcnR1YWwg
fkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBETlNSZXNvbHZlUXVl
dWUmIHNpbmdsZXRvbigpOwogCisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUsIE9ic2VydmVyKik7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShPYnNlcnZlciopOwogICAgIHZv
aWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVjcmVtZW50UmVxdWVz
dENvdW50KCkKICAgICB7CkBAIC00OCwxMyArNzUsMTIgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7
CiAKICAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpOwogICAgIHZvaWQgcGxhdGZvcm1SZXNv
bHZlKGNvbnN0IFN0cmluZyYpOwotCisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShj
b25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciopID0gMDsKICAgICB2b2lkIHRpbWVyRmlyZWQo
KTsKIAogICAgIFRpbWVyIG1fdGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDk3OWE1N2Q5ZDgyMGVkMTNiMDAyZmQxY2QyZDdj
ODZlOGUzNzIwMmMuLmUxNmQ2ZDcyNTk1M2U2MGU5M2RjMjY4ZWRiNWQ4NTBjMTgzYzlkY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCkBA
IC0yNyw4ICsyNyw5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlMuaCIK
LSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVD
Ri5oIgogCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMDEsNiArMTAy
LDE2IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKICAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtD
Rkhvc3RBZGRyZXNzZXMsIDApOwogfQogCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgRE5TUmVzb2x2ZVF1ZXVlOjpP
YnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBETlNSZXNvbHZlUXVldWVDRjo6cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciogLyog
b2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBwcmVmZXRj
aEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CkBAIC0xMTAsMyArMTIxLDQgQEAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQogfQogCiB9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0YuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTdhNmQzOTc1ZmNkNGM4
MGEyYjQyNTNjMWI3YWNiYzEwOGJiMTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRi5oCkBAIC0wLDAgKzEsNDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJs
aWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0YoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgT2JzZXJ2ZXIqKSBm
aW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtU3RvcFJlc29sdmUoT2JzZXJ2ZXIqKSBmaW5hbDsKK307
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJs
LmNwcAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li5mODQ2
NmQ5OWYwNGYxOWIxNTlkMjk1OTBmMjE4Mzc4NWRlMTNlZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWUuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCiAKICNpZiBV
U0UoQ1VSTCkKIApAQCAtNDMsNiArNDMsMTYgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8sIEROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2ZXIqIC8q
IG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVz
b2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciogLyogb2JzZXJ2ZXIg
Ki8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1
ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29s
dmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjNhMzQ3MTk5ZDFhZjUwZTU2Y2ExZjVjYjIxY2Vk
ZmZkZGE1ZjU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsxLDQxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNS
ZXNvbHZlUXVldWVDdXJsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAg
RE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciopIGZpbmFsOwor
ICAgIHZvaWQgcGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciopIGZpbmFsOworfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29s
dmVRdWV1ZVNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNS
ZXNvbHZlUXVldWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVhM2ZjZTRjNWI2YTE4OWU1ODYzNjk1ZDlh
NjRhOTc0NmEzMTMxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBETlNSZXNvbHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6
CisgICAgRE5TUmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICB2
b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciopIGZp
bmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciopIGZpbmFsOworCisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxHQ2FuY2VsbGFibGU+PiBtX29ic2VydmVyczsK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNT
b3VwLmNwcAppbmRleCBjYTExNDU3ZGRkMjIzM2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYzOTUwLi4x
NzQ1MDA3ZGY5Y2Q5ZWFhNzYwN2U2ZDlkOWRkODNkYjNhZjM3OTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCkBAIC0yNiw3ICsyNiw3
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJE
TlNSZXNvbHZlUXVldWUuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCiAKICNp
ZiBVU0UoU09VUCkKIApAQCAtOTEsNiArOTEsMjcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKICAgICBETlNSZXNvbHZlUXVldWU6OnNp
bmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwogfQogCitzdGF0aWMgdm9pZCByZXNv
bHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBzdGF0
dXMsIHZvaWQqIGRhdGEpCit7CisgICAgaWYgKHN0YXR1cyAhPSBTT1VQX1NUQVRVU19PSykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIG9ic2VydmVyID0g
c3RhdGljX2Nhc3Q8RE5TUmVzb2x2ZVF1ZXVlOjpPYnNlcnZlcio+KGRhdGEpOworCisgICAgVmVj
dG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYgKCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2ZWQo
YWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBsZW47CisgICAgYXV0byogaXBh
ZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihzb3Vw
X2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3MsICZsZW4pKTsKKyAgICBhZGRyZXNzZXMudW5j
aGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcGFkZHJlc3MpKTsKKworICAgIG9ic2Vy
dmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKwogdm9pZCBETlNSZXNvbHZlUXVldWU6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CkBAIC05OCw2ICsxMTksMjMgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogICAgIHNvdXBfc2Vzc2lvbl9w
cmVmZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1l
LnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOwogfQog
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCBETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNv
dXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2Fu
Y2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19j
b250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2Fu
Y2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssIG9ic2VydmVyKTsK
KworICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlci0+Z2V0SWQoKSwgV1RGTW92ZShjYW5jZWxs
YWJsZSkpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnBsYXRmb3JtU3RvcFJlc29s
dmUoT2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIGlmIChhdXRvIGNhbmNlbGxhYmxlID0gbV9v
YnNlcnZlcnMudGFrZShvYnNlcnZlci0+Z2V0SWQoKSkpCisgICAgICAgIGdfY2FuY2VsbGFibGVf
Y2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsKK30KKwogdm9pZCBwcmVmZXRjaEROUyhjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmNwcAppbmRleCBhNTIwNDA0NWRjNzIxM2EyZjAxZjJhMTQwN2MwZjBiY2NmMjM3MjEy
Li4zODc0MjBlMDNkOTQxYTE0OTY1ZTFhZThhMTEzMjIxYmRiYWQ4OTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5jcHAKQEAgLTQyLDYgKzQyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYg
UExBVEZPUk0oQ09DT0EpCit1c2luZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9IE5ldHdv
cmtSVENSZXNvbHZlckNvY29hOworI2Vsc2UKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRm
b3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyOworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBjcmVhdGVUaHJlYWQoKQogewogICAgIGF1dG8gdGhyZWFk
ID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsKQEAgLTE2NCwxMyArMTcw
LDIxIEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1NvY2tl
dE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVy
OjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJl
c3MpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jl
c29sdmVyPihbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNP
ckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybT4oaWRlbnRpZmllciwgW3RoaXMsIGlk
ZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAg
ICBpZiAocmVzdWx0LmVycm9yKCkgIT0gTmV0d29ya1JUQ1Jlc29sdmVyOjpFcnJvcjo6Q2FuY2Vs
bGVkKQogICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRlbnRpZmll
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0aW9u
LT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVk
QWRkcmVzcyhyZXN1bHQudmFsdWUoKSksIGlkZW50aWZpZXIpOworICAgICAgICBhdXRvJiBwbGF0
Zm9ybUFkZHJlc3NlcyA9IHJlc3VsdC52YWx1ZSgpLmdldCgpOworICAgICAgICBzaXplX3QgY291
bnQgPSBwbGF0Zm9ybUFkZHJlc3Nlcy5zaXplKCk7CisgICAgICAgIFZlY3RvcjxXZWJLaXQ6OlJU
Q05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgICAgICBhZGRyZXNzZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICAgICAgZm9yIChhdXRvIGFkZHJlc3MgOiBw
bGF0Zm9ybUFkZHJlc3NlcykKKyAgICAgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQo
UlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3MuZ2V0KCktPnNpbl9h
ZGRyKSkpOworCisgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgaWRlbnRp
Zmllcik7CiAgICAgfSk7CiAgICAgcmVzb2x2ZXItPnN0YXJ0KGFkZHJlc3MpOwogICAgIG1fcmVz
b2x2ZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc29sdmVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcAppbmRleCAzYzk5ODdkMDQ4MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi4yYzBl
MjdiZmQ4NzlmNDY3NTcyYTI5ODhiODEzYTYyZWJjNTA4NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAKQEAgLTMyLDY4ICszMiwzMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHZv
aWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5m
bywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCi17Ci0gICAgQVNTRVJU
X1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKLQotICAgIGlmIChlcnJvci0+ZG9tYWluKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBu
b3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUKGluZm8pOwotICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29y
a1JUQ1Jlc29sdmVyKj4oaW5mbyk7Ci0KLSAgICBCb29sZWFuIHJlc3VsdDsKLSAgICBDRkFycmF5
UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyho
b3N0UmVmLCAmcmVzdWx0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLQot
ICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7Ci0g
ICAgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOwotICAgIGFkZHJlc3Nl
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewotICAgICAgICBDRkRhdGFSZWYgZGF0YSA9
IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5k
ZXgpOwotICAgICAgICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1
Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKLSAgICAgICAgYWRkcmVz
c2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3Mo
YWRkcmVzcy0+c2luX2FkZHIpKSk7Ci0gICAgfQotICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRk
cmVzc2VzKTsKLX0KLQotTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIoQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICA6IG1fY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCitOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5l
dHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAg
LCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewogfQog
CiBOZXR3b3JrUlRDUmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIoKQogewotICAgIENGSG9z
dFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQo
KSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0Lmdl
dCgpLCBudWxscHRyLCBudWxscHRyKTsKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmV4cGVjdGVkKEVycm9yOjpVbmtub3duKSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jl
c29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit2b2lkIE5ldHdvcmtSVENSZXNv
bHZlcjo6Y29tcGxldGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+JiBhZGRyZXNz
ZXMpCiB7Ci0gICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBDRkhv
c3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIgfTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUs
ICZjb250ZXh0KTsKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwg
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIEJvb2xl
YW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhv
c3RBZGRyZXNzZXMsIG51bGxwdHIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25I
YW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CiB9CiAK
LXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVy
OjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jl
c29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7
Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhh
bmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6
Q2FuY2VsbGVkKSk7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5y
ZXNvbHZlKGFkZHJlc3MsIHRoaXMpOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29t
cGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCit2
b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCiB7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLnN0b3BSZXNvbHZlKHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5N2NkYThjNzIzYmRl
MzVlNzI3OC4uMjk4YmUxZjA5NWVmNTQ2ZWI2ZDFkMDAwYTVmYjUyZGEyYWJjOGI0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyLmgKQEAgLTI3LDMxICsyNywzMiBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKLSNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1jbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworY2xhc3MgTmV0d29ya1JUQ1Jlc29s
dmVyIDogcHVibGljIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2ZXIgewogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgRXJyb3IgeyBVbmtub3duLCBDYW5jZWxsZWQgfTsKIAotICAgIHVz
aW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNv
bnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJyb3I+OworICAgIHVzaW5nIEFk
ZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRXJyb3I+OwogICAgIHVzaW5nIENvbXBsZXRpb25I
YW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+
OwogCi0gICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYp
OwotICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVz
b2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdmly
dHVhbCB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CiAKLSAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcyk7Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNv
bnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZv
aWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7CisgICAg
dm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4mKSBmaW5hbDsK
KyAgICB1aW50NjRfdCBnZXRJZCgpIGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfTsKIAot
cHJpdmF0ZToKK3Byb3RlY3RlZDoKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgQ29t
cGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0
UmVmPiBtX2hvc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTZiM2ViMWVmN2NiZDc4OGM0MWI2MzJlMjc1NDE5
OTlmMWMzMzZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShD
Rkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFt
RXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQoreworICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8s
ICF0eXBlSW5mbyk7CisKKyAgICBpZiAoZXJyb3ItPmRvbWFpbikgeworICAgICAgICAvLyBGSVhN
RTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHByb3ZpZGVkIGluIHRo
ZSBjYWxsYmFjay4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChpbmZvKTsK
KyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENSZXNvbHZlckNvY29h
Kj4oaW5mbyk7CisKKyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29sdmVk
QWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVz
dWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVfdCBj
b3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9yPFJU
Q05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBjb3VudDsgKytpbmRleCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYp
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAg
ICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tl
ZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICByZXNvbHZl
ci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYShDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNv
Y29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBD
RlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0
U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAg
ICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENv
bnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9Owor
ICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQp
OworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BH
ZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3Nl
cywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3Zv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbElu
Zm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNz
ZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJy
b3I6OkNhbmNlbGxlZCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjVm
ZGI2Njg3MjFlNThhOWNiZDU4ZTA4OTU4NjkxMTRkNThhODM4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNs
dWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSA6IHB1YmxpYyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpIGZpbmFsOworCisgICAgdm9p
ZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZp
bmFsOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IDkzMDRjNWM4NTE1NjA4OTgxNmFjOTQ1MDFkZjM3MGE1MTgw
MWE5YmIuLmMwODFmZWMwNGRjY2VhMzU0NGZlOWM4YzJhY2U4MTgwMDY2NGRhYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDgsNiArNDgsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09V
UkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogICAg
IE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCisg
ICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKwogICAgIFBs
YXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4
L0F0dGFjaG1lbnRVbml4LmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZWI1ZTJjNmM4NWQxMmExYjJlZTIxYThkZjY0ODI1ODZjZTI1ZjdiMS4uMzdmODg3NjUx
MjAzODZmYTBlZDZiMzQzNzE3Y2U4YzQyNmY0YzMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDgsNiArOTA4LDcgQEAKIAkJNDEw
NDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8q
IFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAgLyogUlRD
TmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1
NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDExMkI1NTUxRkEwRUE3QTAw
RTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRG
NzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0
d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1Nv
Y2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJ
CTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIw
MDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpAQCAtMzI2NSw2ICszMjY2
LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENS
ZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAw
RTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0
aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tl
dC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5l
dHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
U29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjAwLDYgKzYyMDMsOCBA
QAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVz
c2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtS
VENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1OTgxREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3NTk5MURFODRGQjAwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1OUQxREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDUyOSw2ICsxMDUz
NCw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUgLyogTmV0
d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQx
MTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMx
ODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333462</attachid>
            <date>2018-02-09 01:16:08 -0800</date>
            <delta_ts>2018-02-09 01:42:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180209101606.patch</filename>
            <type>text/plain</type>
            <size>38688</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwMjBlOGUyN2QyNGMw
YzM3YjNkMWQ5NGYwMDM4NjUxNzQ4ZmUyMS4uMGFiYzZjODUyOWJkZTgzN2UzYTYyZjdjZjU4N2I5
MDFkNTVlZTQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVl
dWVDRi5oOiBBZGQgdGhlIG5ldyBtZXRob2RzLCB3ZSBoYXZlIHRvIGltcGxlbWVudCB0aGVzZSBt
ZXRob2RzIGFuZCBtb3ZlCisgICAgICAgIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjb2Rl
IGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtUmVzb2x2ZSk6
IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaDogTmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNz
LCBhZGRpbmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0
IGFsbG93cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBwbGF0Zm9y
bSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBsZXRpb24g
aGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdp
dGggdGhlIHNvdXAgbGlicmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBw
cm9jZXNzIHdpdGggYQorICAgICAgICBHQ2FuY2VsbGFibGUuCisKIDIwMTgtMDItMDYgIERvbiBP
bG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBSZW1vdmUgV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTc1ZDZmNzNkMmNiNmQ1
MmU1ODNhMjA0NzczNDcwNzRkMWUyMTJkOS4uNTk4YmZhYjExZWJiNGExMmM3ZGY5YzdmY2VjMzg5
Mjk4OTA4MGVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxOC0wMi0wOCAgQWxlamFu
ZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtS
VENSZXNvbHZlciBwb3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzg4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDcmVhdGUgYW4gc3BlY2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0
ZSB0aGUgZ2VuZXJpYyBjb2RlIGluIHRoZSBiYXNlIGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxl
bWVudGF0aW9uIHBvcnQKKyAgICAgICAgYWdub3N0aWMgYW5kIGRlcGVuZGVudCBvbiBETlNSZXNv
bHZlUXVldWUgY2xhc3Mgd2hpY2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBk
ZXRhaWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwOiBDcmVhdGUgYW4gYWxpYXMgY2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBp
bnN0YW50aWF0ZSB0aGUgcmVzb2x2ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92
aWRlcjo6Y3JlYXRlUmVzb2x2ZXIpOiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNl
aXZlIGEgbmV3IElQQWRkcmVzcyBjbGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQg
b24gcnRjIGxpYndlYnJ0YyBsaWJyYXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNv
ZGUuIFVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGFzIHRoZSBiYXNlIGNsYXNzCisgICAgICAgIHRv
IGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBpbiB0aGUgZGVmYXVsdCBzdGFy
dCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHJlc29sdmUgb3Bl
cmF0aW9uCisgICAgICAgIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JU
Q1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50aWZpZXIgaW4gdGhl
IGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6On5O
ZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBBZGQgYSBuZXcgaW1w
bGVtZW50YXRpb24gdXNpbmcgdGhlIEROU1Jlc29sdmVRdWV1ZSBjbGFzcy4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKTogRGl0dG8KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg6IFJlbW92ZSB0aGUgcGxhdGZvcm0g
c3BlY2lmaWMgY29kZSBhbmQgdXNlIHRoZSBETlNSZXNvbHZlUXVldWUgZm9yIGEgZ2VuZXJhbAor
ICAgICAgICBzb2x1dGlvbiB0byBpbXBsZW1lbnQgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUu
IEF2b2lkIHVzaW5nIHRoZSBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkZXBlbmRzIG9uIGxpYndlcnRj
IGNsYXNzZXMgdG8gbWFrZQorICAgICAgICBpdCBtb3JlIGdlbmVyYWwgcmVnYXJkaW5nIEROUyBu
YW1lIHJlc29sdXRpb24uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3Rh
cnQpOiBNYWtlIHRoaXMgY2xhc3MgdmlydHVhbC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JU
Q1Jlc29sdmVyOjpzdG9wKTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwLgor
ICAgICAgICBOb3cgdGhpcyBjbGFzcyBvdmVycmlkZXMgdGhlIHN0YXJ0IGFuZCBzdG9wIG1ldGhv
ZHMgdGhhdCB1c2UgRE5TUmVzb2x2ZVF1ZXVlLCBjb2NvYSBpbXBsZW1lbnRhdGlvbiBzaG91bGQg
dXNlIHRoZSBETlNSZXNvbHZlUXVldWUKKyAgICAgICAgY2xhc3MgaW4gdGhlIGZ1dHVyZSBhbmQg
cmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2luZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMg
Y2xhc3MgaXMgaW4gdGhlIHBsYXRmb3JtIGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUg
ZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZl
ciBjb21waWxhdGlvbiBmb3IgR1RLLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBj
b21waWxhdGlvbi4KKwogMjAxOC0wMi0wNiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNv
bnkuY29tPgogCiAgICAgICAgIFJlbW92ZSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIGRpcmVj
dG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZl
UXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVmNWMzOTI5YmNhMzM5MzAwZjBhMDI2MTgu
LmE0YjEwMjc5ZTJlMWIyYTFmMDAxNGM1NTllMGQzMWNjOTc3OTE4OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3
LDExICsyNywyNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVR
dWV1ZS5oIgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5o
IgorI2VsaWYgVVNFKENGKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGLmgiCisjZWxpZiBV
U0UoQ1VSTCkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisjZW5kaWYKKwogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0UoU09VUCkKK3VzaW5nIEROU1Jlc29s
dmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlU291cDsKKyNlbGlmIFVTRShDRikKK3Vz
aW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ0Y7CisjZWxpZiBV
U0UoQ1VSTCkKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVl
Q3VybDsKKyNlbmRpZgorCiAvLyBXaGVuIHJlc29sdmUgcXVldWUgaXMgZW1wdHksIHdlIGZpcmUg
YXN5bmMgcmVzb2x1dGlvbiByZXF1ZXN0cyBpbW1lZGlhdGVseSAod2hpY2ggaXMgaW1wb3J0YW50
IGlmIHRoZSBwcmVmZXRjaCBpcyB0cmlnZ2VyZWQgYnkgaG92ZXJpbmcpLgogLy8gQnV0IGR1cmlu
ZyBwYWdlIHBhcnNpbmcsIHdlIHNob3VsZCBjb2FsZXNjZSBpZGVudGljYWwgcmVxdWVzdHMgdG8g
YXZvaWQgc3RyZXNzaW5nIG91dCB0aGUgRE5TIHJlc29sdmVyLgogc3RhdGljIGNvbnN0IGludCBn
TmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVseSA9IDQ7CkBAIC01Miw3ICs2OCw3IEBAIHN0YXRpYyBj
b25zdCBTZWNvbmRzIHJlc29sdmluZ1JldHJ5RGVsYXkgeyAxMDBfbXMgfTsKIAogRE5TUmVzb2x2
ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT4gcXVldWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtPiBxdWV1ZTsKIAogICAgIHJldHVybiBxdWV1ZTsK
IH0KQEAgLTEyNSw0ICsxNDEsMTQgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQo
KQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChyZXNvbHZpbmdSZXRyeURlbGF5KTsKIH0K
IAordm9pZCBETlNSZXNvbHZlUXVldWU6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwg
T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIHBsYXRmb3JtUmVzb2x2ZShob3N0bmFtZSwgb2Jz
ZXJ2ZXIpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZTo6c3RvcFJlc29sdmUoT2JzZXJ2ZXIq
IG9ic2VydmVyKQoreworICAgIHBsYXRmb3JtU3RvcFJlc29sdmUob2JzZXJ2ZXIpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlNSZXNvbHZlUXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQxYzA1YWJiMTg2NWQ3
ZTJiZDJlZjBiOGFhLi4zZTQ0MmJmMmEyMzUwODBhYWUxNmMxZDNlOTEwZmIxOTQ0NGE4ZTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmgKQEAgLTI5LDE4ICsyOSw0NSBAQAogCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxh
dG9taWM+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSVBBZGRyZXNzIHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBJUEFkZHJlc3MoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfaW4pKTsKKyAgICAgICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7CisgICAgfQorCisgICAg
Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBnZXQoKSB7IHJldHVybiAmbV9hZGRyZXNzOyB9Owor
Citwcml2YXRlOgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJlc3M7Cit9OworCiBjbGFz
cyBETlNSZXNvbHZlUXVldWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZl
UXVldWU+OwogCiBwdWJsaWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPElQQWRkcmVzcz4mKSB7IH07CisgICAgICAgIHZpcnR1
YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7CisgICAgfTsKKworICAgIEROU1Jlc29sdmVRdWV1ZSgp
OworICAgIHZpcnR1YWwgfkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwogICAgIHN0YXRp
YyBETlNSZXNvbHZlUXVldWUmIHNpbmdsZXRvbigpOwogCisgICAgdm9pZCByZXNvbHZlKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKik7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShPYnNl
cnZlciopOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQg
ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CkBAIC00OCwxMyArNzUsMTIgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQogICAgIGJvb2wg
aXNVc2luZ1Byb3h5KCk7CiAKICAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpOwogICAgIHZv
aWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpOwotCisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciopID0gMDsKICAgICB2
b2lkIHRpbWVyRmlyZWQoKTsKIAogICAgIFRpbWVyIG1fdGltZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDk3OWE1N2Q5ZDgyMGVk
MTNiMDAyZmQxY2QyZDdjODZlOGUzNzIwMmMuLmUxNmQ2ZDcyNTk1M2U2MGU5M2RjMjY4ZWRiNWQ4
NTBjMTgzYzlkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TQ0ZOZXQuY3BwCkBAIC0yNyw4ICsyNyw5IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKyNpbmNsdWRlICJE
TlNSZXNvbHZlUXVldWVDRi5oIgogCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkBAIC0xMDEsNiArMTAyLDE2IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29s
dmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKICAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9u
KGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDApOwogfQogCit2b2lkIEROU1Jlc29sdmVR
dWV1ZUNGOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgRE5T
UmVzb2x2ZVF1ZXVlOjpPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRjo6cGxhdGZvcm1TdG9wUmVzb2x2
ZShPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwogdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC0xMTAsMyArMTIxLDQgQEAgdm9pZCBwcmVmZXRjaEROUyhj
b25zdCBTdHJpbmcmIGhvc3RuYW1lKQogfQogCiB9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0YuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0YuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OTdhNmQzOTc1ZmNkNGM4MGEyYjQyNTNjMWI3YWNiYzEwOGJiMTk1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRi5o
CkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGIDogcHVibGljIEROU1Jlc29s
dmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0YoKSA9IGRlZmF1bHQ7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSwgT2JzZXJ2ZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtU3RvcFJlc29sdmUoT2JzZXJ2
ZXIqKSBmaW5hbDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9ETlNDdXJsLmNwcAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBj
YTA3MWNhMGM0Li5mODQ2NmQ5OWYwNGYxOWIxNTlkMjk1OTBmMjE4Mzc4NWRlMTNlZDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlMuaCIK
LSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVD
dXJsLmgiCiAKICNpZiBVU0UoQ1VSTCkKIApAQCAtNDMsNiArNDMsMTYgQEAgdm9pZCBETlNSZXNv
bHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxh
dGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8sIEROU1Jlc29sdmVRdWV1
ZTo6T2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZl
ciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjNhMzQ3MTk5ZDFhZjUw
ZTU2Y2ExZjVjYjIxY2VkZmZkZGE1ZjU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7
CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciopIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVhM2ZjZTRjNWI2
YTE4OWU1ODYzNjk1ZDlhNjRhOTc0NmEzMTMxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAs
MCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVR
dWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
LCBPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZl
ciopIGZpbmFsOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxHQ2FuY2VsbGFibGU+
PiBtX29ic2VydmVyczsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNTb3VwLmNwcAppbmRleCBjYTExNDU3ZGRkMjIzM2M3NDNhMThjZGY4Mzgz
NjkwZmY4ZjYzOTUwLi4xNzQ1MDA3ZGY5Y2Q5ZWFhNzYwN2U2ZDlkOWRkODNkYjNhZjM3OTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3Bw
CkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlMu
aCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVl
dWVTb3VwLmgiCiAKICNpZiBVU0UoU09VUCkKIApAQCAtOTEsNiArOTEsMjcgQEAgc3RhdGljIHZv
aWQgcmVzb2x2ZWRDYWxsYmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKICAgICBETlNS
ZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwogfQogCitz
dGF0aWMgdm9pZCByZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRy
ZXNzLCBndWludCBzdGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgaWYgKHN0YXR1cyAhPSBTT1VQ
X1NUQVRVU19PSykKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1
dG8qIG9ic2VydmVyID0gc3RhdGljX2Nhc3Q8RE5TUmVzb2x2ZVF1ZXVlOjpPYnNlcnZlcio+KGRh
dGEpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFk
ZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYgKCFzb3VwX2FkZHJl
c3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBsZW47
CisgICAgYXV0byogaXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29j
a2FkZHJfaW4qPihzb3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3MsICZsZW4pKTsKKyAg
ICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcGFkZHJlc3Mp
KTsKKworICAgIG9ic2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKwogdm9pZCBETlNS
ZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC05OCw2ICsxMTksMjMgQEAgdm9pZCBETlNS
ZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogICAg
IHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNz
aW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ss
IG51bGxwdHIpOwogfQogCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVyKiBvYnNl
cnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNz
ID0gYWRvcHRHUmVmKHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkp
OworICAgIGF1dG8gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7
CisgICAgc291cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNz
aW9uX2dldF9hc3luY19jb250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3Vw
U2Vzc2lvbigpKSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2ssIG9ic2VydmVyKTsKKworICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlci0+Z2V0SWQoKSwg
V1RGTW92ZShjYW5jZWxsYWJsZSkpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnBs
YXRmb3JtU3RvcFJlc29sdmUoT2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIGlmIChhdXRvIGNh
bmNlbGxhYmxlID0gbV9vYnNlcnZlcnMudGFrZShvYnNlcnZlci0+Z2V0SWQoKSkpCisgICAgICAg
IGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsKK30KKwogdm9pZCBwcmVm
ZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAppbmRleCBhNTIwNDA0NWRjNzIxM2EyZjAxZjJhMTQw
N2MwZjBiY2NmMjM3MjEyLi4zODc0MjBlMDNkOTQxYTE0OTY1ZTFhZThhMTEzMjIxYmRiYWQ4OTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5jcHAKQEAgLTQyLDYgKzQyLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2luZyBOZXR3b3JrUlRDUmVzb2x2ZXJQ
bGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hOworI2Vsc2UKK3VzaW5nIE5ldHdvcmtS
VENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyOworI2VuZGlmCisKIHN0YXRp
YyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBjcmVhdGVUaHJlYWQoKQogewog
ICAgIGF1dG8gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsK
QEAgLTE2NCwxMyArMTcwLDIxIEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaWRSZWNlaXZl
TmV0d29ya1JUQ1NvY2tldE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAKIHZvaWQgTmV0
d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1JUQ1Jlc29sdmVyPihbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29s
dmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlc29s
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybT4oaWRlbnRp
ZmllciwgW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JF
cnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgp
KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gTmV0d29ya1JUQ1Jlc29sdmVy
OjpFcnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpSZXNvbHZlZEFkZHJlc3NFcnJv
cigxKSwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2
ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhyZXN1bHQudmFsdWUoKSksIGlkZW50aWZpZXIpOworICAg
ICAgICBhdXRvJiBwbGF0Zm9ybUFkZHJlc3NlcyA9IHJlc3VsdC52YWx1ZSgpLmdldCgpOworICAg
ICAgICBzaXplX3QgY291bnQgPSBwbGF0Zm9ybUFkZHJlc3Nlcy5zaXplKCk7CisgICAgICAgIFZl
Y3RvcjxXZWJLaXQ6OlJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgICAgICBh
ZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICAgICAgZm9yIChh
dXRvIGFkZHJlc3MgOiBwbGF0Zm9ybUFkZHJlc3NlcykKKyAgICAgICAgICAgIGFkZHJlc3Nlcy51
bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJl
c3MuZ2V0KCktPnNpbl9hZGRyKSkpOworCisgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3MoYWRk
cmVzc2VzKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAgICAgcmVzb2x2ZXItPnN0YXJ0KGFkZHJl
c3MpOwogICAgIG1fcmVzb2x2ZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc29sdmVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4MDhmM2E3MTg1NzczMTFmOWU1Y2Ix
NmMzZmYwMTZlLi4yYzBlMjdiZmQ4NzlmNDY3NTcyYTI5ODhiODEzYTYyZWJjNTA4NDc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5jcHAKQEAgLTMyLDY4ICszMiwzMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJ
bmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8p
Ci17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKLQotICAgIGlmIChl
cnJvci0+ZG9tYWluKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJl
LCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGluZm8pOwotICAgIGF1dG8qIHJlc29sdmVyID0gc3Rh
dGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyKj4oaW5mbyk7Ci0KLSAgICBCb29sZWFuIHJlc3Vs
dDsKLSAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0
R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKLQotICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZl
ZEFkZHJlc3Nlcyk7Ci0gICAgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2Vz
OwotICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKLQotICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewotICAgICAgICBD
RkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZl
ZEFkZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsK
LSAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3Mo
cnRjOjpJUEFkZHJlc3MoYWRkcmVzcy0+c2luX2FkZHIpKSk7Ci0gICAgfQotICAgIHJlc29sdmVy
LT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKLX0KLQotTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3Jr
UlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICA6
IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCitOZXR3b3Jr
UlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKQogewogfQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIo
KQogewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVu
TG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBDRkhvc3RTZXRD
bGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKICAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpVbmtub3duKSk7CiB9CiAKLXZv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit2b2lk
IE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJUEFk
ZHJlc3M+JiBhZGRyZXNzZXMpCiB7Ci0gICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpKTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgp
LCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUpOwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hv
c3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOwotICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhZGRy
ZXNzZXMgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKK3ZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgQ0ZI
b3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NG
SG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5yZXNvbHZlKGFkZHJlc3MsIHRoaXMpOwogfQogCi12b2lkIE5ldHdvcmtS
VENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+
JiBhZGRyZXNzZXMpCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCiB7Ci0gICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnN0b3BSZXNvbHZlKHRoaXMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1
Y2U5N2NkYThjNzIzYmRlMzVlNzI3OC4uMjk4YmUxZjA5NWVmNTQ2ZWI2ZDFkMDAwYTVmYjUyZGEy
YWJjOGI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKQEAgLTI3LDMxICsyNywzMiBAQAogCiAjaWYgVVNF
KExJQldFQlJUQykKIAorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogI2luY2x1ZGUgIlJU
Q05ldHdvcmsuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworY2xhc3Mg
TmV0d29ya1JUQ1Jlc29sdmVyIDogcHVibGljIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6T2Jz
ZXJ2ZXIgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgRXJyb3IgeyBVbmtub3duLCBDYW5jZWxs
ZWQgfTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJyb3I+
OworICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRXJyb3I+OwogICAgIHVz
aW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFkZHJl
c3Nlc09yRXJyb3ImJik+OwogCi0gICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKENvbXBs
ZXRpb25IYW5kbGVyJiYpOwotICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKKyAgICBleHBsaWNp
dCBOZXR3b3JrUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXImJik7CisgICAgdmlydHVhbCB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CiAKLSAgICB2b2lkIHN0
YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmlydHVhbCB2b2lkIHN0
b3AoKTsKIAotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFk
ZHJlc3M+Jik7CisgICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRk
cmVzcz4mKSBmaW5hbDsKKyAgICB1aW50NjRfdCBnZXRJZCgpIGZpbmFsIHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKKyAgICB1aW50NjRfdCBtX2lkZW50
aWZpZXI7CiAgICAgQ29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBS
ZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTZiM2ViMWVmN2NiZDc4
OGM0MWI2MzJlMjc1NDE5OTlmMWMzMzZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCkBAIC0w
LDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNs
dWRlIDx3dGYvRXhwZWN0ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lk
IHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8s
IGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQoreworICAgIEFTU0VSVF9V
TlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7CisKKyAgICBpZiAoZXJyb3ItPmRvbWFpbikgewor
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90
IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEFTU0VSVChpbmZvKTsKKyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtS
VENSZXNvbHZlckNvY29hKj4oaW5mbyk7CisKKyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFy
cmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2lu
Zyhob3N0UmVmLCAmcmVzdWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
KworICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7
CisgICAgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJl
c3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0
YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3Nlcywg
aW5kZXgpOworICAgICAgICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBz
dHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRk
cmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoYWRkcmVzcykpOworICAg
IH0KKyAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK05ldHdvcmtSVENS
ZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYShDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdv
cmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3Ao
bV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7
Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNvbnN0IFN0cmluZyYg
YWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAg
IENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVk
TmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0Lmdl
dCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAg
Qm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwg
a0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0b3AoKQoreworICAg
IENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6
OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYjVmZGI2Njg3MjFlNThhOWNiZDU4ZTA4OTU4NjkxMTRkNThhODM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29s
dmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSA6IHB1YmxpYyBOZXR3b3JrUlRD
UmVzb2x2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlckNvY29h
KENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpIGZp
bmFsOworCisgICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpIGZpbmFsOworICAg
IHZvaWQgc3RvcCgpIGZpbmFsOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+
IG1faG9zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJ
QldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDkzMDRjNWM4NTE1NjA4OTgxNmFj
OTQ1MDFkZjM3MGE1MTgwMWE5YmIuLmMwODFmZWMwNGRjY2VhMzU0NGZlOWM4YzJhY2U4MTgwMDY2
NGRhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDgsNiArNDgsOCBAQCBsaXN0KEFQ
UEVORCBXZWJLaXRfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Np
b25Tb3VwLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHRTb3VwLmNwcAogCisgICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5jcHAKKwogICAgIFBsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcAogICAgIFBs
YXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZWI1ZTJjNmM4NWQxMmExYjJlZTIxYThkZjY0ODI1ODZjZTI1
ZjdiMS4uMzdmODg3NjUxMjAzODZmYTBlZDZiMzQzNzE3Y2U4YzQyNmY0YzMxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDgsNiAr
OTA4LDcgQEAKIAkJNDEwNDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxRERE
MkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRG
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAq
LzsgfTsKIAkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0
NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDEx
MkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQz
QUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIy
MjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMg
LyogTGliV2ViUlRDTmV0d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkg
LyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5jcHAgKi87IH07CiAJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9u
aXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMwNzU5QTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpA
QCAtMzI2NSw2ICszMjY2LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05l
dHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyog
TmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE5ldHdvcmtSVENSZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJC
NTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJX
ZWJSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJU
Q05ldHdvcmsuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5l
dHdvcmtSVENTb2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TmV0d29ya1JUQ1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1NvY2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURF
ODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
MjAwLDYgKzYyMDMsOCBAQAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3Jr
UlRDUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1
IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3
ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlG
RDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1
OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3
NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1
OUQxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBA
IC0xMDUyOSw2ICsxMDUzNCw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5l
dHdvcmtSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1
MDBGMzI4MkUgLyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURF
ODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBO
ZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333465</attachid>
            <date>2018-02-09 01:42:46 -0800</date>
            <delta_ts>2018-02-09 01:47:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180209104245.patch</filename>
            <type>text/plain</type>
            <size>43711</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUwMjBlOGUyN2QyNGMw
YzM3YjNkMWQ5NGYwMDM4NjUxNzQ4ZmUyMS4uN2FlZDBjZTYyZDQ3M2U2MzM5ZTY2ODg3NDAwNDZl
NjE4YmRmM2QyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVl
dWVDRi5oOiBBZGQgdGhlIG5ldyBtZXRob2RzLCB3ZSBoYXZlIHRvIGltcGxlbWVudCB0aGVzZSBt
ZXRob2RzIGFuZCBtb3ZlCisgICAgICAgIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjb2Rl
IGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtUmVzb2x2ZSk6
IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaDogTmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNz
LCBhZGRpbmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0
IGFsbG93cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBwbGF0Zm9y
bSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBsZXRpb24g
aGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdp
dGggdGhlIHNvdXAgbGlicmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBw
cm9jZXNzIHdpdGggYQorICAgICAgICBHQ2FuY2VsbGFibGUuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5l
dCBjbGFzcy4KKwogMjAxOC0wMi0wNiAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgogCiAgICAgICAgIFJlbW92ZSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIGRpcmVjdG9y
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBhNzVkNmY3M2QyY2I2ZDUyZTU4M2EyMDQ3NzM0NzA3NGQxZTIxMmQ5Li41
OThiZmFiMTFlYmI0YTEyYzdkZjljN2ZjZWMzODkyOTg5MDgwZWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM4IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhbiBz
cGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4gdGhlIGJh
c2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAgICBhZ25v
c3RpYyBhbmQgZGVwZW5kZW50IG9uIEROU1Jlc29sdmVRdWV1ZSBjbGFzcyB3aGljaCBlbmNhcHN1
bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBhbiBhbGlhcyBjbGFzcyBu
YW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRoZSByZXNvbHZlci4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcik6IFVzZWQg
dGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBBZGRyZXNzIGNsYXNzIHRo
YXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2VicnRjIGxpYnJhcnkuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA6IFJl
bW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBETlNSZXNvbHZlUXVldWUg
YXMgdGhlIGJhc2UgY2xhc3MKKyAgICAgICAgdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVj
aWZpYyBjb2RlIGluIHRoZSBkZWZhdWx0IHN0YXJ0IGFuZCBzdG9wIG1ldGhvZHMuIEFkZCB0aGUg
aWRlbnRpZmllciBvZiB0aGUgcmVzb2x2ZSBvcGVyYXRpb24KKyAgICAgICAgdG8gdGhlIGNsYXNz
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZl
cik6IEFkZCB0aGUgaWRlbnRpZmllciBpbiB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcik6IFJlbW92ZSB0
aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jl
c29sdmVyOjpjb21wbGV0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jl
c29sdmVyOjpzdGFydCk6IEFkZCBhIG5ldyBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgRE5TUmVz
b2x2ZVF1ZXVlIGNsYXNzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGFuZCB1c2UgdGhlIERO
U1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0aW9uIHRvIGltcGxlbWVu
dCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcgdGhlIElQQWRkcmVzcyBj
bGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBtYWtlCisgICAgICAgIGl0
IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlvbi4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhpcyBjbGFzcyB2aXJ0dWFs
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0by4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3Bw
OiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0aGlzIGNsYXNzIG92ZXJy
aWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBETlNSZXNvbHZlUXVldWUs
IGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZQorICAg
ICAgICBjbGFzcyBpbiB0aGUgZnV0dXJlIGFuZCByZW1vdmUgdGhpcyBjbGFzcywgbWFraW5nIHN1
cmUgYWxsIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjbGFzcyBpcyBpbiB0aGUgcGxhdGZvcm0gZGly
ZWN0b3J5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBBZGQgTmV0d29ya1JUQ1Jlc29sdmVyIGNvbXBpbGF0aW9uIGZvciBHVEsuCisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY2xhc3MgdG8gdGhlIGNvbXBpbGF0aW9uLgorCiAyMDE4LTAyLTA2ICBE
b24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFdl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTY4MmYyOTMxNmQ3MmJlZTE5
ZjRjM2VjNzJmZmYyZDdkYjRmNmFlMy4uYjBjOGRiOWZiZGRmYmM2YTE4N2Q3MzRiODRmMjE5NzIw
ZGU5NWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjE5Niw2ICsyMTk2LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0
NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RD
Rk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VF
Njg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUz
ODAwRTcyMzE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ2RjEyRDI2RTM4MDBFNzIzMTUgLyogRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25z
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0
NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9
OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFE
NDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyMCw2
ICs5NTIxLDcgQEAKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MjMxNSAv
KiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAv
KiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMzI0Niw2ICsyMzI0OCw3IEBACiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1
IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAw
MTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2
MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTcyMzE1IC8q
IEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1
IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3
OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcxNjg1MEM0NzAw
MzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAgLTI3MDgwLDYg
KzI3MDgzLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGln
aHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2MjdDRCAv
KiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MjMxNSAvKiBE
TlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGNDAwOTc2NTc2
NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JCNTlGNDE0NTdB
NDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODI3MSw3ICsyODI3NSw2IEBACiAJCQkJMDc5NjlEQzIxN0QxNDE1MTAwN0ZGODQy
IC8qIEpTUlRDU3RhdHNSZXBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFMkM0MzZDMUJDRjA3
MUUwMDAxRTJCQyAvKiBKU1JUQ1RyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUMw
MUMzMEMyNzREREQwMDlGNEVDOSAvKiBKU1NjcmVlbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY1
QjQwOEEyMDIxMkY3NzAwODBGOTEzIC8qIE9yaWdpblRocmVhZExvY2FsQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEQTE1RUNFMTJCMDNGNjEwMDNBNTgzQSAvKiBKU1NjcmlwdFByb2Nlc3Nv
ck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNDQ3NkVGMURBNUJDNUUwMDJCNkVEMiAvKiBK
U1Njcm9sbFRvT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEMDZBRDExQzc3NzU0ODAw
RkRGQUYxIC8qIEpTU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yODg5MSw2ICsyODg5NCw3IEBACiAJCQkJNDE4NEY1MTYxRUFGMDVBODAwRjE4QkYwIC8q
IE9yaWVudGF0aW9uTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwMTQ2MjhCMTAzQ0Qx
REUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU5
RTg5RkMxNkUyREMwNTAwQTkwOEY4IC8qIE9yaWdpbkxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNUI0MDhBMjAyMTJGNzcwMDgwRjkxMyAvKiBPcmlnaW5UaHJlYWRMb2NhbENhY2hlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDU4MUZBRjE1MjBGOTFGMDAzQTdBNzUgLyogT3NjaWxsYXRvck5v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNUREMEU4MUI4REQwMEIyNTk2NSAvKiBPdXRs
aW5lVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMjlGNTcyMThDNjk1MTQwMDREMEY4MSAv
KiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAppbmRl
eCBhOGMyZGY0MGMzYmZiYWM1ZjVjMzkyOWJjYTMzOTMwMGYwYTAyNjE4Li5jYzc2NTc4MmJjZmU5
YzA0NzQyYmM2NWI2ODllZWQwZDc5MWY0NTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCkBAIC0yNywxMSArMjcsMjcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKIAorI2lm
IFVTRShTT1VQKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIKKyNlbGlmIFVTRShD
RikKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorI2VsaWYgVVNFKENVUkwpCisj
aW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIgorI2VuZGlmCisKICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisjaWYgVVNFKFNPVVApCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0
Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisjZWxpZiBVU0UoQ0YpCit1c2luZyBETlNSZXNv
bHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0OworI2VsaWYgVVNFKENVUkwp
Cit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1cmw7Cisj
ZW5kaWYKKwogLy8gV2hlbiByZXNvbHZlIHF1ZXVlIGlzIGVtcHR5LCB3ZSBmaXJlIGFzeW5jIHJl
c29sdXRpb24gcmVxdWVzdHMgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIGltcG9ydGFudCBpZiB0aGUg
cHJlZmV0Y2ggaXMgdHJpZ2dlcmVkIGJ5IGhvdmVyaW5nKS4KIC8vIEJ1dCBkdXJpbmcgcGFnZSBw
YXJzaW5nLCB3ZSBzaG91bGQgY29hbGVzY2UgaWRlbnRpY2FsIHJlcXVlc3RzIHRvIGF2b2lkIHN0
cmVzc2luZyBvdXQgdGhlIEROUyByZXNvbHZlci4KIHN0YXRpYyBjb25zdCBpbnQgZ05hbWVzVG9S
ZXNvbHZlSW1tZWRpYXRlbHkgPSA0OwpAQCAtNTIsNyArNjgsNyBAQCBzdGF0aWMgY29uc3QgU2Vj
b25kcyByZXNvbHZpbmdSZXRyeURlbGF5IHsgMTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYg
RE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxETlNSZXNvbHZlUXVldWU+IHF1ZXVlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNS
ZXNvbHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7CiAKICAgICByZXR1cm4gcXVldWU7CiB9CkBAIC0x
MjUsNCArMTQxLDE0IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp0aW1lckZpcmVkKCkKICAgICAg
ICAgbV90aW1lci5zdGFydE9uZVNob3QocmVzb2x2aW5nUmV0cnlEZWxheSk7CiB9CiAKK3ZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVy
KiBvYnNlcnZlcikKK3sKKyAgICBwbGF0Zm9ybVJlc29sdmUoaG9zdG5hbWUsIG9ic2VydmVyKTsK
K30KKwordm9pZCBETlNSZXNvbHZlUXVldWU6OnN0b3BSZXNvbHZlKE9ic2VydmVyKiBvYnNlcnZl
cikKK3sKKyAgICBwbGF0Zm9ybVN0b3BSZXNvbHZlKG9ic2VydmVyKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNjNDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYw
YjhhYS4uM2U0NDJiZjJhMjM1MDgwYWFlMTZjMWQzZTkxMGZiMTk0NDRhOGU0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0y
OSwxOCArMjksNDUgQEAKIAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8YXRvbWljPgor
I2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElQQWRkcmVzcyB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgSVBBZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiogYWRkcmVzcykKKyAgICB7
CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KSk7CisgICAgICAgIG1fYWRkcmVzcyA9ICphZGRyZXNzOworICAgIH0KKworICAgIGNvbnN0IHN0
cnVjdCBzb2NrYWRkcl9pbiogZ2V0KCkgeyByZXR1cm4gJm1fYWRkcmVzczsgfTsKKworcHJpdmF0
ZToKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gbV9hZGRyZXNzOworfTsKKwogY2xhc3MgRE5TUmVz
b2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsK
IAogcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZp
cnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZvaWQgY29tcGxl
dGVkKGNvbnN0IFZlY3RvcjxJUEFkZHJlc3M+JikgeyB9OworICAgICAgICB2aXJ0dWFsIHVpbnQ2
NF90IGdldElkKCkgPSAwOworICAgIH07CisKKyAgICBETlNSZXNvbHZlUXVldWUoKTsKKyAgICB2
aXJ0dWFsIH5ETlNSZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7CisKICAgICBzdGF0aWMgRE5TUmVz
b2x2ZVF1ZXVlJiBzaW5nbGV0b24oKTsKIAorICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCBPYnNlcnZlciopOworICAgIHZvaWQgc3RvcFJlc29sdmUoT2JzZXJ2ZXIqKTsK
ICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVu
dFJlcXVlc3RDb3VudCgpCiAgICAgewpAQCAtNDgsMTMgKzc1LDEyIEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KICAgICBib29sIGlzVXNpbmdQ
cm94eSgpOwogCiAgICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKICAgICB2b2lkIHBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKLQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVJl
c29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgT2JzZXJ2ZXIqKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtU3RvcFJlc29sdmUoT2JzZXJ2ZXIqKSA9IDA7CiAgICAgdm9pZCB0aW1l
ckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZk
MWNkMmQ3Yzg2ZThlMzcyMDJjLi5lMTZkNmQ3MjU5NTNlNjBlOTNkYzI2OGVkYjVkODUwYzE4M2M5
ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcApAQCAtMjcsOCArMjcsOSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlQ0YuaCIKIAorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTAx
LDYgKzEwMiwxNiBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpCiAgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRI
b3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKIH0KIAordm9pZCBETlNSZXNvbHZlUXVldWVDRjo6
cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8sIEROU1Jlc29sdmVR
dWV1ZTo6T2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtU3RvcFJlc29sdmUoT2JzZXJ2
ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQg
cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwpAQCAtMTEwLDMgKzEyMSw0IEBAIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKIH0KIAogfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThk
OTM0N2Q1NWVlZmNlNTQ1NjRhYmQ5MzhlMTQwMTQyYTE2MGMyZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQu
aApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCA6IHB1YmxpYyBETlNS
ZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZh
dWx0OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUsIE9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNvbHZl
KE9ic2VydmVyKikgZmluYWw7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKaW5kZXggNWEzMWY1OTg0YzBjZThlZmFlODk4MWQ5
M2EyODMwY2EwNzFjYTBjNC4uZjg0NjZkOTlmMDRmMTliMTU5ZDI5NTkwZjIxODM3ODVkZTEzZWQw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJs
LmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlQ3VybC5oIgogCiAjaWYgVVNFKENVUkwpCiAKQEAgLTQzLDYgKzQzLDE2IEBAIHZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFt
ZSAqLykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1
cmw6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCBETlNSZXNv
bHZlUXVldWU6Ok9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnBsYXRmb3JtU3RvcFJlc29sdmUo
T2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
IHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIzYTM0NzE5
OWQxYWY1MGU1NmNhMWY1Y2IyMWNlZGZmZGRhNWY1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ3VybCA6IHB1YmxpYyBETlNSZXNvbHZl
UXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSwgT2JzZXJ2ZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtU3RvcFJlc29sdmUoT2JzZXJ2
ZXIqKSBmaW5hbDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlYTNm
Y2U0YzViNmExODllNTg2MzY5NWQ5YTY0YTk3NDZhMzEzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5o
CkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCA6IHB1YmxpYyBETlNS
ZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRlZmF1
bHQ7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSwgT2JzZXJ2ZXIqKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtU3RvcFJlc29sdmUo
T2JzZXJ2ZXIqKSBmaW5hbDsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIEdSZWZQdHI8R0NhbmNl
bGxhYmxlPj4gbV9vYnNlcnZlcnM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4
Y2RmODM4MzY5MGZmOGY2Mzk1MC4uMTc0NTAwN2RmOWNkOWVhYTc2MDdlNmQ5ZDlkZDgzZGIzYWYz
Nzk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0RO
U1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNT
b3VwLmNwcApAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlU291cC5oIgogCiAjaWYgVVNFKFNPVVApCiAKQEAgLTkxLDYgKzkxLDI3IEBAIHN0
YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCiAg
ICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsK
IH0KIAorc3RhdGljIHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjayhTb3VwQWRkcmVz
cyogYWRkcmVzcywgZ3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAgIGlmIChzdGF0dXMg
IT0gU09VUF9TVEFUVVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChkYXRhKTsK
KyAgICBhdXRvKiBvYnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2
ZXIqPihkYXRhKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsK
KyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKworICAgIGlmICghc291
cF9hZGRyZXNzX2lzX3Jlc29sdmVkKGFkZHJlc3MpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bnQgbGVuOworICAgIGF1dG8qIGlwYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3Ry
dWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVu
KSk7CisgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBh
ZGRyZXNzKSk7CisKKyAgICBvYnNlcnZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKIHZv
aWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtOTgsNiArMTE5LDIzIEBAIHZv
aWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKICAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5z
b3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENh
bGxiYWNrLCBudWxscHRyKTsKIH0KIAordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZVF1ZXVlOjpPYnNlcnZl
ciogb2JzZXJ2ZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8g
YWRkcmVzcyA9IGFkb3B0R1JlZihzb3VwX2FkZHJlc3NfbmV3KGhvc3RuYW1lLnV0ZjgoKS5kYXRh
KCksIDApKTsKKyAgICBhdXRvIGNhbmNlbGxhYmxlID0gYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVf
bmV3KCkpOworICAgIHNvdXBfYWRkcmVzc19yZXNvbHZlX2FzeW5jKGFkZHJlc3MuZ2V0KCksIHNv
dXBfc2Vzc2lvbl9nZXRfYXN5bmNfY29udGV4dChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9u
KCkuc291cFNlc3Npb24oKSksIGNhbmNlbGxhYmxlLmdldCgpLCByZXNvbHZlZFdpdGhPYnNlcnZl
ckNhbGxiYWNrLCBvYnNlcnZlcik7CisKKyAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXItPmdl
dElkKCksIFdURk1vdmUoY2FuY2VsbGFibGUpKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBpZiAo
YXV0byBjYW5jZWxsYWJsZSA9IG1fb2JzZXJ2ZXJzLnRha2Uob2JzZXJ2ZXItPmdldElkKCkpKQor
ICAgICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbChjYW5jZWxsYWJsZS5nZXQoKSk7Cit9CisKIHZv
aWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYw
MWYyYTE0MDdjMGYwYmNjZjIzNzIxMi4uMzg3NDIwZTAzZDk0MWExNDk2NWUxYWU4YTExMzIyMWJk
YmFkODkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC00Miw2ICs0MiwxMiBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQordXNpbmcgTmV0d29ya1JUQ1Jl
c29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTsKKyNlbHNlCit1c2luZyBO
ZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlcjsKKyNlbmRpZgor
CiBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFk
KCkKIHsKICAgICBhdXRvIHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2Vy
dmVyKCk7CkBAIC0xNjQsMTMgKzE3MCwyMSBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6ZGlk
UmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubgogCiB2
b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtS
VENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0
byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0+
KGlkZW50aWZpZXIsIFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJl
c3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNf
dmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IE5ldHdvcmtSVENS
ZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRy
ZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJU
Q1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVy
KTsKKyAgICAgICAgYXV0byYgcGxhdGZvcm1BZGRyZXNzZXMgPSByZXN1bHQudmFsdWUoKS5nZXQo
KTsKKyAgICAgICAgc2l6ZV90IGNvdW50ID0gcGxhdGZvcm1BZGRyZXNzZXMuc2l6ZSgpOworICAg
ICAgICBWZWN0b3I8V2ViS2l0OjpSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAg
ICAgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgICAg
IGZvciAoYXV0byBhZGRyZXNzIDogcGxhdGZvcm1BZGRyZXNzZXMpCisgICAgICAgICAgICBhZGRy
ZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVz
cyhhZGRyZXNzLmdldCgpLT5zaW5fYWRkcikpKTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRy
ZXNzKGFkZHJlc3NlcyksIGlkZW50aWZpZXIpOwogICAgIH0pOwogICAgIHJlc29sdmVyLT5zdGFy
dChhZGRyZXNzKTsKICAgICBtX3Jlc29sdmVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShyZXNv
bHZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKaW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3MzEx
ZjllNWNiMTZjM2ZmMDE2ZS4uMmMwZTI3YmZkODc5ZjQ2NzU3MmEyOTg4YjgxM2E2MmViYzUwODQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCkBAIC0zMiw2OCArMzIsMzIgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwg
Q0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lk
ICppbmZvKQotewotICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAg
ICBpZiAoZXJyb3ItPmRvbWFpbikgewotICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUg
ZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZl
ciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVh
biByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVm
KUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQo
cmVzb2x2ZWRBZGRyZXNzZXMpOwotICAgIFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFk
ZHJlc3NlczsKLSAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0K
LSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAg
ICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
cmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihk
YXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBB
ZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICBy
ZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Ci19Ci0KLU5ldHdvcmtSVENSZXNvbHZlcjo6
TmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Ci0gICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQor
TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQorICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkKIHsKIH0KIAogTmV0d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jl
c29sdmVyKCkKIHsKLSAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgp
LCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQ0ZI
b3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgaWYgKGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6VW5rbm93bikpOwog
fQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SVBBZGRyZXNzPiYgYWRkcmVzc2VzKQogewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0
Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlz
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9z
dC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRo
UnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKLSAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRp
b24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgYWRkcmVzc2VzIH0pOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCit2
b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewot
ICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5
cGU6OmtDRkhvc3RBZGRyZXNzZXMpOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkpOworICAgIFdlYkNvcmU6OkROU1Jlc29s
dmVRdWV1ZTo6c2luZ2xldG9uKCkucmVzb2x2ZShhZGRyZXNzLCB0aGlzKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBB
ZGRyZXNzPiYgYWRkcmVzc2VzKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQogewot
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5k
bGVyKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CisgICAgV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZSh0aGlzKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCmluZGV4IDFiY2Y3MzZlNzY3
YTY3MDRiNWNlOTdjZGE4YzcyM2JkZTM1ZTcyNzguLjI5OGJlMWYwOTVlZjU0NmViNmQxZDAwMGE1
ZmI1MmRhMmFiYzhiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCkBAIC0yNywzMSArMjcsMzIgQEAKIAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKICNpbmNs
dWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIHsK
K2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlciA6IHB1YmxpYyBXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWU6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwg
Q2FuY2VsbGVkIH07CiAKLSAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPj4s
IEVycm9yPjsKKyAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPj4sIEVycm9yPjsK
ICAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChBZGRyZXNzZXNPckVycm9yJiYpPjsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZl
cihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CisgICAg
ZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwogCi0gICAg
dm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgpOworICAg
IHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOworICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCk7CiAKLSAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29y
azo6SVBBZGRyZXNzPiYpOworICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJUEFkZHJlc3M+JikgZmluYWw7CisgICAgdWludDY0X3QgZ2V0SWQoKSBmaW5hbCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH07CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3Qg
bV9pZGVudGlmaWVyOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7
Ci0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU2YjNlYjFl
ZjdjYmQ3ODhjNDFiNjMyZTI3NTQxOTk5ZjFjMzM2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQor
CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0
aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5
cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21h
aW4pIHsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZv
IGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSo+KGluZm8pOworCisgICAgQm9vbGVhbiByZXN1bHQ7Cisg
ICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFk
ZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7CisKKyAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRy
ZXNzZXMpOworICAgIFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAg
ICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZEYXRh
UmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRy
ZXNzZXMsIGluZGV4KTsKKyAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisgICAg
ICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGFkZHJlc3Mp
KTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCitOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYTo6TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IE5ldHdvcmtSVENSZXNvbHZlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK3sKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6
On5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpCit7CisgICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21S
dW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVm
YXVsdE1vZGUpOworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdGFydChjb25zdCBT
dHJpbmcmIGFkZHJlc3MpCit7CisgICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRo
TmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
KTsKKyAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBy
ZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1f
aG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUp
OworICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3Qu
Z2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdG9wKCkK
K3sKKyAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdElu
Zm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWI1ZmRiNjY4NzIxZTU4YTljYmQ1OGUwODk1ODY5MTE0ZDU4YTgz
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtS
VENSZXNvbHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgOiBwdWJsaWMgTmV0
d29ya1JUQ1Jlc29sdmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYShDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EoKSBmaW5hbDsKKworICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZI
b3N0UmVmPiBtX2hvc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNt
YWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5MzA0YzVjODUxNTYw
ODk4MTZhYzk0NTAxZGYzNzBhNTE4MDFhOWJiLi5jMDgxZmVjMDRkY2NlYTM1NDRmZTljOGMyYWNl
ODE4MDA2NjRkYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTQ4LDYgKzQ4LDggQEAg
bGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHAKICAgICBOZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0U291cC5jcHAKIAorICAgIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwCisKICAgICBQbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5jcHAK
ICAgICBQbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKICAgICBQbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGViNWUyYzZjODVkMTJhMWIyZWUyMWE4ZGY2NDgy
NTg2Y2UyNWY3YjEuLjM3Zjg4NzY1MTIwMzg2ZmEwZWQ2YjM0MzcxN2NlOGM0MjZmNGMzMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTA4LDYgKzkwOCw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYwMDZEMCAvKiBSVENOZXR3b3Jr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4
MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLzsgfTsKIAkJNDEwNDgyQ0Ux
REREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3
b3JrLmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi87IH07
CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0
NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovOyB9Owog
CQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQjIyNjIxRTM3MTI0NDAw
NEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDEzMDc1QTkxREU4NUYyQzAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtS
VENTb2NrZXQuY3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMwMDAzOUVDNjkgLyogTmV0d29y
a1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzMDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCAq
LzsgfTsKQEAgLTMyNjUsNiArMzI2Niw4IEBACiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAv
KiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdv
cmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3
ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMg
LyogTGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
aWJXZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3Jr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMw
NzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjIwMCw2ICs2MjAzLDggQEAKIAkJCQk0MURDNDU5ODFFM0Q2RUQ2MDBCMTFGNTEgLyog
TmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTQxMTJCNTQ3MUY5RkQzQUIw
MEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAogCQkJCTQxMTJCNTQ4MUY5RkQz
QUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywKKwkJCQk0MTEyQjU0NzFGOUZE
M0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovLAorCQkJCTQxMTJC
NTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovLAogCQkJ
CTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLywKIAkJ
CQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovLAogCQkJ
CTQxMzA3NTlEMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0Lm1lc3NhZ2VzLmlu
ICovLApAQCAtMTA1MjksNiArMTA1MzQsNyBAQAogCQkJCTQxREM0NTk3MUUzRDZFMjIwMEIxMUY1
MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTEx
NjU0MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JU
Q1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4
NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMw
NzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0d29ya1JUQ1NvY2tldE1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4
RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333466</attachid>
            <date>2018-02-09 01:47:40 -0800</date>
            <delta_ts>2018-02-09 02:03:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180209104739.patch</filename>
            <type>text/plain</type>
            <size>42899</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uZjcxMTMzYTI4MjZmZTEyYTViYmU1M2I3NmQwMTJk
ZjRmZTg2MTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVl
dWVDRi5oOiBBZGQgdGhlIG5ldyBtZXRob2RzLCB3ZSBoYXZlIHRvIGltcGxlbWVudCB0aGVzZSBt
ZXRob2RzIGFuZCBtb3ZlCisgICAgICAgIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjb2Rl
IGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtUmVzb2x2ZSk6
IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaDogTmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNz
LCBhZGRpbmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0
IGFsbG93cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBwbGF0Zm9y
bSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBsZXRpb24g
aGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdp
dGggdGhlIHNvdXAgbGlicmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBw
cm9jZXNzIHdpdGggYQorICAgICAgICBHQ2FuY2VsbGFibGUuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5l
dCBjbGFzcy4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3QgZmFzdC9yZXBsYWNlZC9i
b3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVhbWVyLUNSSVRJQ0FMICoq
OiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdzZWdtZW50LT5mb3JtYXQg
PT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRmNGI0Li5iZTEwYTNhYTMz
ZDE4YzVmZTBkMjQwYmEzZDY4ZDQyNmJkMWRhYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhbiBzcGVjaWZpYyBD
b2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4gdGhlIGJhc2UgY2xhc3Ms
IG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAgICBhZ25vc3RpYyBhbmQg
ZGVwZW5kZW50IG9uIEROU1Jlc29sdmVRdWV1ZSBjbGFzcyB3aGljaCBlbmNhcHN1bGF0ZXMgdGhl
IHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmlu
ZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFz
IGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90
CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2VicnRjIGxpYnJhcnkuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBETlNSZXNvbHZlUXVldWUgYXMgdGhlIGJh
c2UgY2xhc3MKKyAgICAgICAgdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGluIHRoZSBkZWZhdWx0IHN0YXJ0IGFuZCBzdG9wIG1ldGhvZHMuIEFkZCB0aGUgaWRlbnRpZmll
ciBvZiB0aGUgcmVzb2x2ZSBvcGVyYXRpb24KKyAgICAgICAgdG8gdGhlIGNsYXNzLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcik6IEFkZCB0
aGUgaWRlbnRpZmllciBpbiB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcik6IFJlbW92ZSB0aGUgcGxhdGZv
cm0gc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpj
b21wbGV0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpz
dGFydCk6IEFkZCBhIG5ldyBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgRE5TUmVzb2x2ZVF1ZXVl
IGNsYXNzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0
bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDog
UmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVR
dWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxh
dGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0
IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2Vu
ZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQg
Q29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUg
c3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBETlNSZXNvbHZlUXVldWUsIGNvY29hIGlt
cGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZQorICAgICAgICBjbGFz
cyBpbiB0aGUgZnV0dXJlIGFuZCByZW1vdmUgdGhpcyBjbGFzcywgbWFraW5nIHN1cmUgYWxsIHRo
ZSBwbGF0Zm9ybSBzcGVjaWZpYyBjbGFzcyBpcyBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5Lgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
OiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBB
ZGQgTmV0d29ya1JUQ1Jlc29sdmVyIGNvbXBpbGF0aW9uIGZvciBHVEsuCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EgY2xhc3MgdG8gdGhlIGNvbXBpbGF0aW9uLgorCiAyMDE4LTAyLTA4ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGEgd2F5IHRv
IGRpc2FibGUgW092ZXJyaWRlQnVpbHRpbnNdIGJlaGF2aW9yIGluIGEgZ2l2ZW4gRE9NV3JhcHBl
cldvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGJhNjNmMmE2MmM4YjM4YWFjZjY4ZmYzY2UyYTE2ZmMyMTZhOTU5NC4uY2Nm
ZDdiNGY1ZmQ1MjRhMzA4M2VlODI0MzBkYjBjOTQxZDc2ZDY2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5Niw2ICsyMTk2
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTcyMzE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ2RjEyRDI2RTM4MDBFNzIzMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUxNiw2ICs5NTE3LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MjMxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzIzMyw2ICsyMzIzNSw3IEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5o
ICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJ
CQkJN0VFNjg0NkYxMkQyNkUzODAwRTcyMzE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8s
CiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
ICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0
LmggKi8sCiAJCQkJRTEzRUYzNDcxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcCAqLywKQEAgLTI3MDY4LDYgKzI3MDcxLDcgQEAKIAkJCQlGRDMxNjA5MTEy
QjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3
MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdFRTY4NDZGMTJEMjZFMzgwMEU3MjMxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTgxODVGNDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBM0JCNTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVu
dFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyog
RG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThjMmRmNDBjM2Jm
YmFjNWY1YzM5MjliY2EzMzkzMDBmMGEwMjYxOC4uY2M3NjU3ODJiY2ZlOWMwNDc0MmJjNjViNjg5
ZWVkMGQ3OTFmNDUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAi
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZUN1cmwuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorI2lmIFVTRShTT1VQKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNv
bHZlUXVldWVTb3VwOworI2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZv
cm0gPSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNpbmcgRE5TUmVz
b2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlmCisKIC8vIFdo
ZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVl
c3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRy
aWdnZXJlZCBieSBob3ZlcmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hv
dWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRo
ZSBETlMgcmVzb2x2ZXIuCiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUltbWVkaWF0
ZWx5ID0gNDsKQEAgLTUyLDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgcmVzb2x2aW5n
UmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1
ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxh
dGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwogfQpAQCAtMTI1LDQgKzE0MSwxNCBA
QCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6dGltZXJGaXJlZCgpCiAgICAgICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KHJlc29sdmluZ1JldHJ5RGVsYXkpOwogfQogCit2b2lkIEROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciogb2JzZXJ2ZXIpCit7
CisgICAgcGxhdGZvcm1SZXNvbHZlKGhvc3RuYW1lLCBvYnNlcnZlcik7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZShPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgcGxh
dGZvcm1TdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5o
CmluZGV4IGQyYTdhNzdiOGJjYzQ4ZDFjMDVhYmIxODY1ZDdlMmJkMmVmMGI4YWEuLjNlNDQyYmYy
YTIzNTA4MGFhZTE2YzFkM2U5MTBmYjE5NDQ0YThlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjksMTggKzI5LDQ1IEBA
CiAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDxuZXRp
bmV0L2luLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxpY2l0IElQQWRkcmVz
cyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGFkZHJlc3MpCisgICAgeworICAgICAgICBtZW1z
ZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworICAgICAgICBt
X2FkZHJlc3MgPSAqYWRkcmVzczsKKyAgICB9CisKKyAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qIGdldCgpIHsgcmV0dXJuICZtX2FkZHJlc3M7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0
IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKIGNsYXNzIEROU1Jlc29sdmVRdWV1ZSB7CiAg
ICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT47CiAKIHB1YmxpYzoKKyAg
ICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZl
cigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0
b3I8SVBBZGRyZXNzPiYpIHsgfTsKKyAgICAgICAgdmlydHVhbCB1aW50NjRfdCBnZXRJZCgpID0g
MDsKKyAgICB9OworCisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVz
b2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2lu
Z2xldG9uKCk7CiAKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgT2Jz
ZXJ2ZXIqKTsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKE9ic2VydmVyKik7CiAgICAgdm9pZCBhZGQo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KQogICAgIHsKQEAgLTQ4LDEzICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIEROU1Jlc29sdmVRdWV1ZSgpOwotCiAgICAgYm9vbCBpc1VzaW5nUHJveHkoKTsKIAogICAg
IHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJik7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bVN0b3BSZXNvbHZlKE9ic2VydmVyKikgPSAwOwogICAgIHZvaWQgdGltZXJGaXJlZCgpOwogCiAg
ICAgVGltZXIgbV90aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9ETlNDRk5ldC5jcHAKaW5kZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFjZDJkN2M4NmU4ZTM3
MjAyYy4uZTE2ZDZkNzI1OTUzZTYwZTkzZGMyNjhlZGI1ZDg1MGMxODNjOWRjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKQEAgLTI3LDgg
KzI3LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgotI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGLmgiCiAK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEwMSw2ICsxMDIsMTYgQEAg
dm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQogICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFk
ZHJlc3NlcywgMCk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCBETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVy
KiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUNGOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKiAvKiBvYnNlcnZl
ciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAg
LTExMCwzICsxMjEsNCBAQCB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
CiB9CiAKIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZDkzNDdkNTVlZWZjZTU0
NTY0YWJkOTM4ZTE0MDE0MmExNjBjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsK
K3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVDRk5ldCgpID0gZGVmYXVsdDsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciopIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0ROU0N1cmwuY3BwCmluZGV4IDVhMzFmNTk4NGMwY2U4ZWZhZTg5ODFkOTNhMjgzMGNhMDcxY2Ew
YzQuLmY4NDY2ZDk5ZjA0ZjE5YjE1OWQyOTU5MGYyMTgzNzg1ZGUxM2VkMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgotI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIK
IAogI2lmIFVTRShDVVJMKQogCkBAIC00Myw2ICs0MywxNiBAQCB2b2lkIEROU1Jlc29sdmVRdWV1
ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJl
c29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgRE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKiAvKiBv
YnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIHByZWZldGNo
RE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNS
ZXNvbHZlUXVldWVDdXJsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
RE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyM2EzNDcxOTlkMWFmNTBlNTZjYTFm
NWNiMjFjZWRmZmRkYTVmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEROU1Jlc29sdmVRdWV1ZUN1cmwgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKK3B1Ymxp
YzoKKyAgICBETlNSZXNvbHZlUXVldWVDdXJsKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAg
IHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKikg
ZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKikgZmluYWw7Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
RE5TUmVzb2x2ZVF1ZXVlU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWEzZmNlNGM1YjZhMTg5ZTU4
NjM2OTVkOWE2NGE5NzQ2YTMxMzFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZVNvdXAgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsK
K3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVTb3VwKCkgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2Vy
dmVyKikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKikgZmlu
YWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2Jz
ZXJ2ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1NvdXAuY3BwCmluZGV4IGNhMTE0NTdkZGQyMjMzYzc0M2ExOGNkZjgzODM2OTBmZjhm
NjM5NTAuLjE3NDUwMDdkZjljZDllYWE3NjA3ZTZkOWQ5ZGQ4M2RiM2FmMzc5NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgotI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAu
aCIKIAogI2lmIFVTRShTT1VQKQogCkBAIC05MSw2ICs5MSwyNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQogICAgIEROU1Jlc29sdmVR
dWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiB9CiAKK3N0YXRpYyB2
b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFkZHJlc3MsIGd1
aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVT
X09LKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgYXV0byogb2Jz
ZXJ2ZXIgPSBzdGF0aWNfY2FzdDxETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVyKj4oZGF0YSk7CisK
KyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2Vz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisKKyAgICBpZiAoIXNvdXBfYWRkcmVzc19pc19y
ZXNvbHZlZChhZGRyZXNzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGxlbjsKKyAgICBh
dXRvKiBpcGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9p
bio+KHNvdXBfYWRkcmVzc19nZXRfc29ja2FkZHIoYWRkcmVzcywgJmxlbikpOworICAgIGFkZHJl
c3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGlwYWRkcmVzcykpOworCisg
ICAgb2JzZXJ2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCiB2b2lkIEROU1Jlc29sdmVR
dWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTk4LDYgKzExOSwyMyBAQCB2b2lkIEROU1Jlc29sdmVR
dWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiAgICAgc291cF9z
ZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
aG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0
cik7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBhZG9w
dEdSZWYoc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwKSk7CisgICAg
YXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICBz
b3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLmdldCgpLCBzb3VwX3Nlc3Npb25fZ2V0
X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9u
KCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjaywgb2Jz
ZXJ2ZXIpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyLT5nZXRJZCgpLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1T
dG9wUmVzb2x2ZShPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKGF1dG8gY2FuY2VsbGFi
bGUgPSBtX29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgpKSkKKyAgICAgICAgZ19jYW5j
ZWxsYWJsZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQorCiB2b2lkIHByZWZldGNoRE5T
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJj
Y2YyMzcyMTIuLjM4NzQyMGUwM2Q5NDFhMTQ5NjVlMWFlOGExMTMyMjFiZGJhZDg5MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3Jt
ID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JUQ1Jlc29s
dmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGljIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAgICAgYXV0
byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpAQCAtMTY0
LDEzICsxNzAsMjEgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVOZXR3b3Jr
UlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3b3JrUlRD
UHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3
b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFk
ZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihpZGVudGlmaWVyLCBb
dGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAg
ICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9y
OjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBp
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0
UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7CisgICAgICAgIGF1
dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCk7CisgICAgICAgIHNp
emVfdCBjb3VudCA9IHBsYXRmb3JtQWRkcmVzc2VzLnNpemUoKTsKKyAgICAgICAgVmVjdG9yPFdl
YktpdDo6UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgICAgIGFkZHJlc3Nl
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3IgKGF1dG8gYWRk
cmVzcyA6IHBsYXRmb3JtQWRkcmVzc2VzKQorICAgICAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tl
ZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy5nZXQo
KS0+c2luX2FkZHIpKSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMp
LCBpZGVudGlmaWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAg
ICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAx
NmUuLjJjMGUyN2JmZDg3OWY0Njc1NzJhMjk4OGI4MTNhNjJlYmM1MDg0NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyLmNwcApAQCAtMzIsNjggKzMyLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1z
dGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBl
IHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5k
b21haW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBp
bmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2Fz
dDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAg
IENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRy
ZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQpOwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVz
c2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAg
YWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJl
ZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVz
c2VzLCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAg
ICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQ
QWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBs
ZXRlZChhZGRyZXNzZXMpOwotfQotCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNv
bHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNv
bHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigpCiB7Ci0g
ICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNldENsaWVudCht
X2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKIH0KIAotdm9pZCBOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3ZvaWQgTmV0d29y
a1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4m
IGFkZHJlc3NlcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1l
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29s
dmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29t
cGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9
KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQordm9pZCBOZXR3b3JrUlRD
UmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBDRkhvc3RDYW5j
ZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRk
cmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVk
KEVycm9yOjpDYW5jZWxsZWQpKTsKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmds
ZXRvbigpLnJlc29sdmUoYWRkcmVzcywgdGhpcyk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29s
dmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mIGFkZHJl
c3NlcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKIHsKLSAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OkROU1Jlc29s
dmVRdWV1ZTo6c2luZ2xldG9uKCkuc3RvcFJlc29sdmUodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0YjVjZTk3Y2Rh
OGM3MjNiZGUzNWU3Mjc4Li4yOThiZTFmMDk1ZWY1NDZlYjZkMWQwMDBhNWZiNTJkYTJhYmM4YjRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjcsMzEgKzI3LDMyIEBACiAKICNpZiBVU0UoTElCV0VC
UlRDKQogCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29y
ay5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtSVENSZXNvbHZlciB7CitjbGFzcyBOZXR3b3Jr
UlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNlcnZlciB7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBFcnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9Owog
Ci0gICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47CisgICAg
dXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4+LCBFcnJvcj47CiAgICAgdXNpbmcgQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JF
cnJvciYmKT47CiAKLSAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhh
bmRsZXImJik7Ci0gICAgfk5ldHdvcmtSVENSZXNvbHZlcigpOworICAgIGV4cGxpY2l0IE5ldHdv
cmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsK
KyAgICB2aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29u
c3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwog
Ci0gICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4m
KTsKKyAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYp
IGZpbmFsOworICAgIHVpbnQ2NF90IGdldElkKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9OwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsK
ICAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0
cjxDRkhvc3RSZWY+IG1faG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNmIzZWIxZWY3Y2JkNzg4YzQxYjYz
MmUyNzU0MTk5OWYxYzMzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0
Zi9FeHBlY3RlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2
ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3Qg
Q0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0
eXBlSW5mbywgIXR5cGVJbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAg
IC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlk
ZWQgaW4gdGhlIGNhbGxiYWNrLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJU
KGluZm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EqPihpbmZvKTsKKworICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYg
cmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RS
ZWYsICZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAg
c2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBW
ZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENG
RGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7
CisgICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBz
b2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMu
dW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAg
IHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2E6Ok5ldHdvcmtSVENSZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3Qu
Z2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAg
ICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwor
dm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0
Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAm
Y29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENG
UnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFu
IHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0
QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
K30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0
Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9z
dEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1f
Y29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFiNWZkYjY2ODcyMWU1OGE5Y2JkNThlMDg5NTg2OTExNGQ1OGE4MzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXIuaCIK
KworI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZl
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxl
dGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisK
KyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBz
dG9wKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNTM2MWFjY2Y4MjM2OTFjMzU3ZDhlMTMzMWZk
NDE1OTJjMzlkODE2NC4uNWI2MGMzZGRlNmZjMWFhMjExYzU3NDc0NGMyODU4MGIwYmVkZGQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC00OCw2ICs0OCw4IEBAIGxpc3QoQVBQRU5EIFdl
YktpdF9TT1VSQ0VTCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAu
Y3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAu
Y3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAor
CiAgICAgUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3IuY3BwCiAgICAgUGxhdGZvcm0v
SVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MzlmZDZhN2U5OTAyZTY0MzU3MjkwNjg5YTFkM2RlMDJlNGI0MWIxLi42
MGFkMWRmZDY2YjJkMWM5ODk3ZTQ3ODI4ZDRiNzk3Mjg4MjM0ZjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMCw2ICs5MTAsNyBA
QAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBG
MDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZE
MCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9Owog
CQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQz
QUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0MTEyQjU1NTFG
QTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3
OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3
MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJX
ZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3
b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAq
LzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlB
MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjY5
LDYgKzMyNzAsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFG
OUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDgxRjlG
RDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05l
dHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29y
ay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3Jr
UlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29j
a2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDQsNiAr
NjIwNyw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92
aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyog
TmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywKKwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBF
Njc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLywKIAkJCQk0MTMwNzU5ODFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4
NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5RDFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5tZXNzYWdlcy5pbiAqLywKQEAgLTEwNTM2
LDYgKzEwNTQxLDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgy
RSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4NUYyQzAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYw
RTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtT
ZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333471</attachid>
            <date>2018-02-09 02:03:19 -0800</date>
            <delta_ts>2018-02-09 02:21:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180209110318.patch</filename>
            <type>text/plain</type>
            <size>42899</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uZjcxMTMzYTI4MjZmZTEyYTViYmU1M2I3NmQwMTJk
ZjRmZTg2MTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVl
dWVDRi5oOiBBZGQgdGhlIG5ldyBtZXRob2RzLCB3ZSBoYXZlIHRvIGltcGxlbWVudCB0aGVzZSBt
ZXRob2RzIGFuZCBtb3ZlCisgICAgICAgIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjb2Rl
IGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtUmVzb2x2ZSk6
IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaDogTmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNz
LCBhZGRpbmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0
IGFsbG93cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBwbGF0Zm9y
bSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBsZXRpb24g
aGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdp
dGggdGhlIHNvdXAgbGlicmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBw
cm9jZXNzIHdpdGggYQorICAgICAgICBHQ2FuY2VsbGFibGUuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5l
dCBjbGFzcy4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3QgZmFzdC9yZXBsYWNlZC9i
b3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVhbWVyLUNSSVRJQ0FMICoq
OiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdzZWdtZW50LT5mb3JtYXQg
PT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRmNGI0Li5iZTEwYTNhYTMz
ZDE4YzVmZTBkMjQwYmEzZDY4ZDQyNmJkMWRhYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhbiBzcGVjaWZpYyBD
b2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4gdGhlIGJhc2UgY2xhc3Ms
IG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAgICBhZ25vc3RpYyBhbmQg
ZGVwZW5kZW50IG9uIEROU1Jlc29sdmVRdWV1ZSBjbGFzcyB3aGljaCBlbmNhcHN1bGF0ZXMgdGhl
IHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmlu
ZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFz
IGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90
CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2VicnRjIGxpYnJhcnkuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBETlNSZXNvbHZlUXVldWUgYXMgdGhlIGJh
c2UgY2xhc3MKKyAgICAgICAgdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGluIHRoZSBkZWZhdWx0IHN0YXJ0IGFuZCBzdG9wIG1ldGhvZHMuIEFkZCB0aGUgaWRlbnRpZmll
ciBvZiB0aGUgcmVzb2x2ZSBvcGVyYXRpb24KKyAgICAgICAgdG8gdGhlIGNsYXNzLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcik6IEFkZCB0
aGUgaWRlbnRpZmllciBpbiB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcik6IFJlbW92ZSB0aGUgcGxhdGZv
cm0gc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpj
b21wbGV0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpz
dGFydCk6IEFkZCBhIG5ldyBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgRE5TUmVzb2x2ZVF1ZXVl
IGNsYXNzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0
bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDog
UmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVR
dWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxh
dGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0
IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2Vu
ZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQg
Q29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUg
c3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBETlNSZXNvbHZlUXVldWUsIGNvY29hIGlt
cGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZQorICAgICAgICBjbGFz
cyBpbiB0aGUgZnV0dXJlIGFuZCByZW1vdmUgdGhpcyBjbGFzcywgbWFraW5nIHN1cmUgYWxsIHRo
ZSBwbGF0Zm9ybSBzcGVjaWZpYyBjbGFzcyBpcyBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5Lgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
OiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBB
ZGQgTmV0d29ya1JUQ1Jlc29sdmVyIGNvbXBpbGF0aW9uIGZvciBHVEsuCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EgY2xhc3MgdG8gdGhlIGNvbXBpbGF0aW9uLgorCiAyMDE4LTAyLTA4ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGEgd2F5IHRv
IGRpc2FibGUgW092ZXJyaWRlQnVpbHRpbnNdIGJlaGF2aW9yIGluIGEgZ2l2ZW4gRE9NV3JhcHBl
cldvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGJhNjNmMmE2MmM4YjM4YWFjZjY4ZmYzY2UyYTE2ZmMyMTZhOTU5NC4uOWVh
M2I0ZDQyNjViYzRlZDA2ZmRiYWZlOGRmODI0NTU0ZGMzYTllMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5Niw2ICsyMTk2
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUxNiw2ICs5NTE3LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzIzMyw2ICsyMzIzNSw3IEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5o
ICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJ
CQkJN0VFNjg0NUMxMkQyNkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8s
CiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
ICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0
LmggKi8sCiAJCQkJRTEzRUYzNDcxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcCAqLywKQEAgLTI3MDY4LDYgKzI3MDcxLDcgQEAKIAkJCQlGRDMxNjA5MTEy
QjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3
MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTgxODVGNDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBM0JCNTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVu
dFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyog
RG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThjMmRmNDBjM2Jm
YmFjNWY1YzM5MjliY2EzMzkzMDBmMGEwMjYxOC4uY2M3NjU3ODJiY2ZlOWMwNDc0MmJjNjViNjg5
ZWVkMGQ3OTFmNDUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAi
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZUN1cmwuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorI2lmIFVTRShTT1VQKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNv
bHZlUXVldWVTb3VwOworI2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZv
cm0gPSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNpbmcgRE5TUmVz
b2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlmCisKIC8vIFdo
ZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVl
c3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRy
aWdnZXJlZCBieSBob3ZlcmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hv
dWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRo
ZSBETlMgcmVzb2x2ZXIuCiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUltbWVkaWF0
ZWx5ID0gNDsKQEAgLTUyLDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgcmVzb2x2aW5n
UmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1
ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxh
dGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwogfQpAQCAtMTI1LDQgKzE0MSwxNCBA
QCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6dGltZXJGaXJlZCgpCiAgICAgICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KHJlc29sdmluZ1JldHJ5RGVsYXkpOwogfQogCit2b2lkIEROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciogb2JzZXJ2ZXIpCit7
CisgICAgcGxhdGZvcm1SZXNvbHZlKGhvc3RuYW1lLCBvYnNlcnZlcik7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZShPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgcGxh
dGZvcm1TdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5o
CmluZGV4IGQyYTdhNzdiOGJjYzQ4ZDFjMDVhYmIxODY1ZDdlMmJkMmVmMGI4YWEuLjNlNDQyYmYy
YTIzNTA4MGFhZTE2YzFkM2U5MTBmYjE5NDQ0YThlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjksMTggKzI5LDQ1IEBA
CiAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDxuZXRp
bmV0L2luLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxpY2l0IElQQWRkcmVz
cyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGFkZHJlc3MpCisgICAgeworICAgICAgICBtZW1z
ZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworICAgICAgICBt
X2FkZHJlc3MgPSAqYWRkcmVzczsKKyAgICB9CisKKyAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qIGdldCgpIHsgcmV0dXJuICZtX2FkZHJlc3M7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0
IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKIGNsYXNzIEROU1Jlc29sdmVRdWV1ZSB7CiAg
ICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT47CiAKIHB1YmxpYzoKKyAg
ICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZl
cigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0
b3I8SVBBZGRyZXNzPiYpIHsgfTsKKyAgICAgICAgdmlydHVhbCB1aW50NjRfdCBnZXRJZCgpID0g
MDsKKyAgICB9OworCisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVz
b2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2lu
Z2xldG9uKCk7CiAKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgT2Jz
ZXJ2ZXIqKTsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKE9ic2VydmVyKik7CiAgICAgdm9pZCBhZGQo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KQogICAgIHsKQEAgLTQ4LDEzICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIEROU1Jlc29sdmVRdWV1ZSgpOwotCiAgICAgYm9vbCBpc1VzaW5nUHJveHkoKTsKIAogICAg
IHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJik7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bVN0b3BSZXNvbHZlKE9ic2VydmVyKikgPSAwOwogICAgIHZvaWQgdGltZXJGaXJlZCgpOwogCiAg
ICAgVGltZXIgbV90aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9ETlNDRk5ldC5jcHAKaW5kZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFjZDJkN2M4NmU4ZTM3
MjAyYy4uZTE2ZDZkNzI1OTUzZTYwZTkzZGMyNjhlZGI1ZDg1MGMxODNjOWRjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKQEAgLTI3LDgg
KzI3LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgotI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGLmgiCiAK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEwMSw2ICsxMDIsMTYgQEAg
dm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQogICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFk
ZHJlc3NlcywgMCk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCBETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVy
KiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUNGOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKiAvKiBvYnNlcnZl
ciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAg
LTExMCwzICsxMjEsNCBAQCB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
CiB9CiAKIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZDkzNDdkNTVlZWZjZTU0
NTY0YWJkOTM4ZTE0MDE0MmExNjBjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsK
K3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVDRk5ldCgpID0gZGVmYXVsdDsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciopIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0ROU0N1cmwuY3BwCmluZGV4IDVhMzFmNTk4NGMwY2U4ZWZhZTg5ODFkOTNhMjgzMGNhMDcxY2Ew
YzQuLmY4NDY2ZDk5ZjA0ZjE5YjE1OWQyOTU5MGYyMTgzNzg1ZGUxM2VkMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgotI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIK
IAogI2lmIFVTRShDVVJMKQogCkBAIC00Myw2ICs0MywxNiBAQCB2b2lkIEROU1Jlc29sdmVRdWV1
ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJl
c29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgRE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKiAvKiBv
YnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIHByZWZldGNo
RE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNS
ZXNvbHZlUXVldWVDdXJsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
RE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyM2EzNDcxOTlkMWFmNTBlNTZjYTFm
NWNiMjFjZWRmZmRkYTVmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEROU1Jlc29sdmVRdWV1ZUN1cmwgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKK3B1Ymxp
YzoKKyAgICBETlNSZXNvbHZlUXVldWVDdXJsKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAg
IHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKikg
ZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKikgZmluYWw7Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
RE5TUmVzb2x2ZVF1ZXVlU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWEzZmNlNGM1YjZhMTg5ZTU4
NjM2OTVkOWE2NGE5NzQ2YTMxMzFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZVNvdXAgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsK
K3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVTb3VwKCkgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2Vy
dmVyKikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKikgZmlu
YWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2Jz
ZXJ2ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1NvdXAuY3BwCmluZGV4IGNhMTE0NTdkZGQyMjMzYzc0M2ExOGNkZjgzODM2OTBmZjhm
NjM5NTAuLjE3NDUwMDdkZjljZDllYWE3NjA3ZTZkOWQ5ZGQ4M2RiM2FmMzc5NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgotI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAu
aCIKIAogI2lmIFVTRShTT1VQKQogCkBAIC05MSw2ICs5MSwyNyBAQCBzdGF0aWMgdm9pZCByZXNv
bHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQogICAgIEROU1Jlc29sdmVR
dWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiB9CiAKK3N0YXRpYyB2
b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFkZHJlc3MsIGd1
aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVT
X09LKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgYXV0byogb2Jz
ZXJ2ZXIgPSBzdGF0aWNfY2FzdDxETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVyKj4oZGF0YSk7CisK
KyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2Vz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisKKyAgICBpZiAoIXNvdXBfYWRkcmVzc19pc19y
ZXNvbHZlZChhZGRyZXNzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGxlbjsKKyAgICBh
dXRvKiBpcGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9p
bio+KHNvdXBfYWRkcmVzc19nZXRfc29ja2FkZHIoYWRkcmVzcywgJmxlbikpOworICAgIGFkZHJl
c3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGlwYWRkcmVzcykpOworCisg
ICAgb2JzZXJ2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCiB2b2lkIEROU1Jlc29sdmVR
dWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTk4LDYgKzExOSwyMyBAQCB2b2lkIEROU1Jlc29sdmVR
dWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiAgICAgc291cF9z
ZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
aG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0
cik7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBhZG9w
dEdSZWYoc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwKSk7CisgICAg
YXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICBz
b3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLmdldCgpLCBzb3VwX3Nlc3Npb25fZ2V0
X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9u
KCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjaywgb2Jz
ZXJ2ZXIpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyLT5nZXRJZCgpLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1T
dG9wUmVzb2x2ZShPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKGF1dG8gY2FuY2VsbGFi
bGUgPSBtX29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgpKSkKKyAgICAgICAgZ19jYW5j
ZWxsYWJsZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQorCiB2b2lkIHByZWZldGNoRE5T
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJj
Y2YyMzcyMTIuLjM4NzQyMGUwM2Q5NDFhMTQ5NjVlMWFlOGExMTMyMjFiZGJhZDg5MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3Jt
ID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JUQ1Jlc29s
dmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGljIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAgICAgYXV0
byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpAQCAtMTY0
LDEzICsxNzAsMjEgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVOZXR3b3Jr
UlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3b3JrUlRD
UHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3
b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFk
ZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihpZGVudGlmaWVyLCBb
dGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAg
ICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9y
OjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBp
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0
UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7CisgICAgICAgIGF1
dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCk7CisgICAgICAgIHNp
emVfdCBjb3VudCA9IHBsYXRmb3JtQWRkcmVzc2VzLnNpemUoKTsKKyAgICAgICAgVmVjdG9yPFdl
YktpdDo6UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgICAgIGFkZHJlc3Nl
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3IgKGF1dG8gYWRk
cmVzcyA6IHBsYXRmb3JtQWRkcmVzc2VzKQorICAgICAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tl
ZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy5nZXQo
KS0+c2luX2FkZHIpKSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMp
LCBpZGVudGlmaWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAg
ICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAx
NmUuLjJjMGUyN2JmZDg3OWY0Njc1NzJhMjk4OGI4MTNhNjJlYmM1MDg0NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyLmNwcApAQCAtMzIsNjggKzMyLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1z
dGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBl
IHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5k
b21haW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBp
bmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2Fz
dDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAg
IENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRy
ZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQpOwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVz
c2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAg
YWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJl
ZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVz
c2VzLCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAg
ICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQ
QWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBs
ZXRlZChhZGRyZXNzZXMpOwotfQotCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNv
bHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNv
bHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigpCiB7Ci0g
ICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNldENsaWVudCht
X2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKIH0KIAotdm9pZCBOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3ZvaWQgTmV0d29y
a1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4m
IGFkZHJlc3NlcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1l
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29s
dmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29t
cGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9
KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQordm9pZCBOZXR3b3JrUlRD
UmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBDRkhvc3RDYW5j
ZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRk
cmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVk
KEVycm9yOjpDYW5jZWxsZWQpKTsKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmds
ZXRvbigpLnJlc29sdmUoYWRkcmVzcywgdGhpcyk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29s
dmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mIGFkZHJl
c3NlcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKIHsKLSAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OkROU1Jlc29s
dmVRdWV1ZTo6c2luZ2xldG9uKCkuc3RvcFJlc29sdmUodGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0YjVjZTk3Y2Rh
OGM3MjNiZGUzNWU3Mjc4Li4yOThiZTFmMDk1ZWY1NDZlYjZkMWQwMDBhNWZiNTJkYTJhYmM4YjRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjcsMzEgKzI3LDMyIEBACiAKICNpZiBVU0UoTElCV0VC
UlRDKQogCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29y
ay5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtSVENSZXNvbHZlciB7CitjbGFzcyBOZXR3b3Jr
UlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNlcnZlciB7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBFcnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9Owog
Ci0gICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47CisgICAg
dXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4+LCBFcnJvcj47CiAgICAgdXNpbmcgQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JF
cnJvciYmKT47CiAKLSAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhh
bmRsZXImJik7Ci0gICAgfk5ldHdvcmtSVENSZXNvbHZlcigpOworICAgIGV4cGxpY2l0IE5ldHdv
cmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsK
KyAgICB2aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29u
c3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwog
Ci0gICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4m
KTsKKyAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYp
IGZpbmFsOworICAgIHVpbnQ2NF90IGdldElkKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9OwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsK
ICAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0
cjxDRkhvc3RSZWY+IG1faG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNmIzZWIxZWY3Y2JkNzg4YzQxYjYz
MmUyNzU0MTk5OWYxYzMzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0
Zi9FeHBlY3RlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2
ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3Qg
Q0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0
eXBlSW5mbywgIXR5cGVJbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAg
IC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlk
ZWQgaW4gdGhlIGNhbGxiYWNrLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJU
KGluZm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EqPihpbmZvKTsKKworICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYg
cmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RS
ZWYsICZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAg
c2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBW
ZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENG
RGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7
CisgICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBz
b2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMu
dW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAg
IHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2E6Ok5ldHdvcmtSVENSZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3Qu
Z2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAg
ICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwor
dm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0
Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAm
Y29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENG
UnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFu
IHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0
QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
K30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0
Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9z
dEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1f
Y29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFiNWZkYjY2ODcyMWU1OGE5Y2JkNThlMDg5NTg2OTExNGQ1OGE4MzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXIuaCIK
KworI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZl
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxl
dGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisK
KyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBz
dG9wKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNTM2MWFjY2Y4MjM2OTFjMzU3ZDhlMTMzMWZk
NDE1OTJjMzlkODE2NC4uNWI2MGMzZGRlNmZjMWFhMjExYzU3NDc0NGMyODU4MGIwYmVkZGQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC00OCw2ICs0OCw4IEBAIGxpc3QoQVBQRU5EIFdl
YktpdF9TT1VSQ0VTCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAu
Y3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAu
Y3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAor
CiAgICAgUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3IuY3BwCiAgICAgUGxhdGZvcm0v
SVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MzlmZDZhN2U5OTAyZTY0MzU3MjkwNjg5YTFkM2RlMDJlNGI0MWIxLi42
MGFkMWRmZDY2YjJkMWM5ODk3ZTQ3ODI4ZDRiNzk3Mjg4MjM0ZjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMCw2ICs5MTAsNyBA
QAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBG
MDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZE
MCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9Owog
CQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQz
QUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0MTEyQjU1NTFG
QTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3
OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3
MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJX
ZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3
b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAq
LzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlB
MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjY5
LDYgKzMyNzAsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFG
OUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDgxRjlG
RDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05l
dHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29y
ay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3Jr
UlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29j
a2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDQsNiAr
NjIwNyw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92
aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyog
TmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywKKwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBF
Njc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLywKIAkJCQk0MTMwNzU5ODFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4
NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5RDFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5tZXNzYWdlcy5pbiAqLywKQEAgLTEwNTM2
LDYgKzEwNTQxLDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgy
RSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4NUYyQzAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYw
RTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtT
ZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333472</attachid>
            <date>2018-02-09 02:21:23 -0800</date>
            <delta_ts>2018-02-09 02:39:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180209112121.patch</filename>
            <type>text/plain</type>
            <size>42908</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uZjcxMTMzYTI4MjZmZTEyYTViYmU1M2I3NmQwMTJk
ZjRmZTg2MTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVl
dWVDRi5oOiBBZGQgdGhlIG5ldyBtZXRob2RzLCB3ZSBoYXZlIHRvIGltcGxlbWVudCB0aGVzZSBt
ZXRob2RzIGFuZCBtb3ZlCisgICAgICAgIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjb2Rl
IGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtUmVzb2x2ZSk6
IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaDogTmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNz
LCBhZGRpbmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0
IGFsbG93cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBwbGF0Zm9y
bSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBsZXRpb24g
aGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdp
dGggdGhlIHNvdXAgbGlicmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBw
cm9jZXNzIHdpdGggYQorICAgICAgICBHQ2FuY2VsbGFibGUuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5l
dCBjbGFzcy4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3QgZmFzdC9yZXBsYWNlZC9i
b3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVhbWVyLUNSSVRJQ0FMICoq
OiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdzZWdtZW50LT5mb3JtYXQg
PT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRmNGI0Li5iZTEwYTNhYTMz
ZDE4YzVmZTBkMjQwYmEzZDY4ZDQyNmJkMWRhYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhbiBzcGVjaWZpYyBD
b2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4gdGhlIGJhc2UgY2xhc3Ms
IG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAgICBhZ25vc3RpYyBhbmQg
ZGVwZW5kZW50IG9uIEROU1Jlc29sdmVRdWV1ZSBjbGFzcyB3aGljaCBlbmNhcHN1bGF0ZXMgdGhl
IHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmlu
ZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFz
IGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90
CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2VicnRjIGxpYnJhcnkuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBETlNSZXNvbHZlUXVldWUgYXMgdGhlIGJh
c2UgY2xhc3MKKyAgICAgICAgdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGluIHRoZSBkZWZhdWx0IHN0YXJ0IGFuZCBzdG9wIG1ldGhvZHMuIEFkZCB0aGUgaWRlbnRpZmll
ciBvZiB0aGUgcmVzb2x2ZSBvcGVyYXRpb24KKyAgICAgICAgdG8gdGhlIGNsYXNzLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcik6IEFkZCB0
aGUgaWRlbnRpZmllciBpbiB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcik6IFJlbW92ZSB0aGUgcGxhdGZv
cm0gc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpj
b21wbGV0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpz
dGFydCk6IEFkZCBhIG5ldyBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgRE5TUmVzb2x2ZVF1ZXVl
IGNsYXNzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0
bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDog
UmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVR
dWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxh
dGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0
IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2Vu
ZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQg
Q29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUg
c3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBETlNSZXNvbHZlUXVldWUsIGNvY29hIGlt
cGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZQorICAgICAgICBjbGFz
cyBpbiB0aGUgZnV0dXJlIGFuZCByZW1vdmUgdGhpcyBjbGFzcywgbWFraW5nIHN1cmUgYWxsIHRo
ZSBwbGF0Zm9ybSBzcGVjaWZpYyBjbGFzcyBpcyBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5Lgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
OiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBB
ZGQgTmV0d29ya1JUQ1Jlc29sdmVyIGNvbXBpbGF0aW9uIGZvciBHVEsuCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EgY2xhc3MgdG8gdGhlIGNvbXBpbGF0aW9uLgorCiAyMDE4LTAyLTA4ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGEgd2F5IHRv
IGRpc2FibGUgW092ZXJyaWRlQnVpbHRpbnNdIGJlaGF2aW9yIGluIGEgZ2l2ZW4gRE9NV3JhcHBl
cldvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGJhNjNmMmE2MmM4YjM4YWFjZjY4ZmYzY2UyYTE2ZmMyMTZhOTU5NC4uOWVh
M2I0ZDQyNjViYzRlZDA2ZmRiYWZlOGRmODI0NTU0ZGMzYTllMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5Niw2ICsyMTk2
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUxNiw2ICs5NTE3LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzIzMyw2ICsyMzIzNSw3IEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5o
ICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJ
CQkJN0VFNjg0NUMxMkQyNkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8s
CiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
ICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0
LmggKi8sCiAJCQkJRTEzRUYzNDcxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcCAqLywKQEAgLTI3MDY4LDYgKzI3MDcxLDcgQEAKIAkJCQlGRDMxNjA5MTEy
QjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3
MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTgxODVGNDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBM0JCNTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVu
dFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyog
RG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThjMmRmNDBjM2Jm
YmFjNWY1YzM5MjliY2EzMzkzMDBmMGEwMjYxOC4uY2M3NjU3ODJiY2ZlOWMwNDc0MmJjNjViNjg5
ZWVkMGQ3OTFmNDUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAi
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZUN1cmwuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorI2lmIFVTRShTT1VQKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNv
bHZlUXVldWVTb3VwOworI2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZv
cm0gPSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNpbmcgRE5TUmVz
b2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlmCisKIC8vIFdo
ZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVl
c3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRy
aWdnZXJlZCBieSBob3ZlcmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hv
dWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRo
ZSBETlMgcmVzb2x2ZXIuCiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUltbWVkaWF0
ZWx5ID0gNDsKQEAgLTUyLDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgcmVzb2x2aW5n
UmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1
ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxh
dGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwogfQpAQCAtMTI1LDQgKzE0MSwxNCBA
QCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6dGltZXJGaXJlZCgpCiAgICAgICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KHJlc29sdmluZ1JldHJ5RGVsYXkpOwogfQogCit2b2lkIEROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciogb2JzZXJ2ZXIpCit7
CisgICAgcGxhdGZvcm1SZXNvbHZlKGhvc3RuYW1lLCBvYnNlcnZlcik7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZShPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgcGxh
dGZvcm1TdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5o
CmluZGV4IGQyYTdhNzdiOGJjYzQ4ZDFjMDVhYmIxODY1ZDdlMmJkMmVmMGI4YWEuLjNlNDQyYmYy
YTIzNTA4MGFhZTE2YzFkM2U5MTBmYjE5NDQ0YThlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjksMTggKzI5LDQ1IEBA
CiAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDxuZXRp
bmV0L2luLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxpY2l0IElQQWRkcmVz
cyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGFkZHJlc3MpCisgICAgeworICAgICAgICBtZW1z
ZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworICAgICAgICBt
X2FkZHJlc3MgPSAqYWRkcmVzczsKKyAgICB9CisKKyAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qIGdldCgpIHsgcmV0dXJuICZtX2FkZHJlc3M7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0
IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKIGNsYXNzIEROU1Jlc29sdmVRdWV1ZSB7CiAg
ICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT47CiAKIHB1YmxpYzoKKyAg
ICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZl
cigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0
b3I8SVBBZGRyZXNzPiYpIHsgfTsKKyAgICAgICAgdmlydHVhbCB1aW50NjRfdCBnZXRJZCgpID0g
MDsKKyAgICB9OworCisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVz
b2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2lu
Z2xldG9uKCk7CiAKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgT2Jz
ZXJ2ZXIqKTsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKE9ic2VydmVyKik7CiAgICAgdm9pZCBhZGQo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KQogICAgIHsKQEAgLTQ4LDEzICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIEROU1Jlc29sdmVRdWV1ZSgpOwotCiAgICAgYm9vbCBpc1VzaW5nUHJveHkoKTsKIAogICAg
IHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJik7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bVN0b3BSZXNvbHZlKE9ic2VydmVyKikgPSAwOwogICAgIHZvaWQgdGltZXJGaXJlZCgpOwogCiAg
ICAgVGltZXIgbV90aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9ETlNDRk5ldC5jcHAKaW5kZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFjZDJkN2M4NmU4ZTM3
MjAyYy4uNjIxYjQ5N2Q0ODQ3NzhmMDIzNjZlMGRlMmZiYTI1NmNlZmRlMTIwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKQEAgLTI3LDgg
KzI3LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgotI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0Lmgi
CiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEwMSw2ICsxMDIsMTYg
QEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQogICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9z
dEFkZHJlc3NlcywgMCk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3Jt
UmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCBETlNSZXNvbHZlUXVldWU6Ok9i
c2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKiAv
KiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIHByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKQEAgLTExMCwzICsxMjEsNCBAQCB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCiB9CiAKIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZDkzNDdk
NTVlZWZjZTU0NTY0YWJkOTM4ZTE0MDE0MmExNjBjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQgOiBwdWJsaWMgRE5TUmVzb2x2
ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVDRk5ldCgpID0gZGVmYXVsdDsK
KworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lLCBPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNl
cnZlciopIGZpbmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU0N1cmwuY3BwCmluZGV4IDVhMzFmNTk4NGMwY2U4ZWZhZTg5ODFkOTNhMjgz
MGNhMDcxY2EwYzQuLmY4NDY2ZDk5ZjA0ZjE5YjE1OWQyOTU5MGYyMTgzNzg1ZGUxM2VkMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5o
IgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1
ZUN1cmwuaCIKIAogI2lmIFVTRShDVVJMKQogCkBAIC00Myw2ICs0MywxNiBAQCB2b2lkIEROU1Jl
c29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8p
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpw
bGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgRE5TUmVzb2x2ZVF1
ZXVlOjpPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2Vy
dmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyM2EzNDcxOTlkMWFm
NTBlNTZjYTFmNWNiMjFjZWRmZmRkYTVmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCkBAIC0wLDAg
KzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUN1cmwgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVl
IHsKK3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVDdXJsKCkgPSBkZWZhdWx0OworCitwcml2
YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9i
c2VydmVyKikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKikg
ZmluYWw7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZWEzZmNlNGM1
YjZhMTg5ZTU4NjM2OTVkOWE2NGE5NzQ2YTMxMzFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApAQCAt
MCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZVNvdXAgOiBwdWJsaWMgRE5TUmVzb2x2
ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVTb3VwKCkgPSBkZWZhdWx0Owor
Citwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUsIE9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2Vy
dmVyKikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdDYW5jZWxsYWJs
ZT4+IG1fb2JzZXJ2ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmluZGV4IGNhMTE0NTdkZGQyMjMzYzc0M2ExOGNkZjgz
ODM2OTBmZjhmNjM5NTAuLjE3NDUwMDdkZjljZDllYWE3NjA3ZTZkOWQ5ZGQ4M2RiM2FmMzc5NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5j
cHAKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRO
Uy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVR
dWV1ZVNvdXAuaCIKIAogI2lmIFVTRShTT1VQKQogCkBAIC05MSw2ICs5MSwyNyBAQCBzdGF0aWMg
dm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQogICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiB9CiAK
K3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFk
ZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAoc3RhdHVzICE9IFNP
VVBfU1RBVFVTX09LKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGF0YSk7CisgICAg
YXV0byogb2JzZXJ2ZXIgPSBzdGF0aWNfY2FzdDxETlNSZXNvbHZlUXVldWU6Ok9ic2VydmVyKj4o
ZGF0YSk7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAg
YWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisKKyAgICBpZiAoIXNvdXBfYWRk
cmVzc19pc19yZXNvbHZlZChhZGRyZXNzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGxl
bjsKKyAgICBhdXRvKiBpcGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBz
b2NrYWRkcl9pbio+KHNvdXBfYWRkcmVzc19nZXRfc29ja2FkZHIoYWRkcmVzcywgJmxlbikpOwor
ICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGlwYWRkcmVz
cykpOworCisgICAgb2JzZXJ2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCiB2b2lkIERO
U1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTk4LDYgKzExOSwyMyBAQCB2b2lkIERO
U1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiAg
ICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNl
c3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFj
aywgbnVsbHB0cik7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNv
bHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVRdWV1ZTo6T2JzZXJ2ZXIqIG9i
c2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGFkZHJl
c3MgPSBhZG9wdEdSZWYoc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAw
KSk7CisgICAgYXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygp
KTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLmdldCgpLCBzb3VwX3Nl
c3Npb25fZ2V0X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNv
dXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxs
YmFjaywgb2JzZXJ2ZXIpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyLT5nZXRJZCgp
LCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6
cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKGF1dG8g
Y2FuY2VsbGFibGUgPSBtX29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgpKSkKKyAgICAg
ICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQorCiB2b2lkIHBy
ZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmEx
NDA3YzBmMGJjY2YyMzcyMTIuLjM4NzQyMGUwM2Q5NDFhMTQ5NjVlMWFlOGExMTMyMjFiZGJhZDg5
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZl
clBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29y
a1JUQ1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3Rh
dGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7
CiAgICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigp
OwpAQCAtMTY0LDEzICsxNzAsMjEgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2Vp
dmVOZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9pZCBO
ZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVz
b2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVz
b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihpZGVu
dGlmaWVyLCBbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNP
ckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVl
KCkpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2
ZXI6OkVycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vy
cm9yKDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNv
bHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7Cisg
ICAgICAgIGF1dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCk7Cisg
ICAgICAgIHNpemVfdCBjb3VudCA9IHBsYXRmb3JtQWRkcmVzc2VzLnNpemUoKTsKKyAgICAgICAg
VmVjdG9yPFdlYktpdDo6UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgICAg
IGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3Ig
KGF1dG8gYWRkcmVzcyA6IHBsYXRmb3JtQWRkcmVzc2VzKQorICAgICAgICAgICAgYWRkcmVzc2Vz
LnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRk
cmVzcy5nZXQoKS0+c2luX2FkZHIpKSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhh
ZGRyZXNzZXMpLCBpZGVudGlmaWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRk
cmVzcyk7CiAgICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVj
YjE2YzNmZjAxNmUuLjJjMGUyN2JmZDg3OWY0Njc1NzJhMjk4OGI4MTNhNjJlYmM1MDg0NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIsNjggKzMyLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9z
dEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5m
bykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYg
KGVycm9yLT5kb21haW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1
cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBz
dGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVz
dWx0OwotICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhv
c3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29s
dmVkQWRkcmVzc2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNz
ZXM7Ci0gICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAg
IENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29s
dmVkQWRkcmVzc2VzLCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkp
OwotICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVz
cyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2
ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOwotfQotCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdv
cmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAg
IDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdv
cmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZl
cigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNl
dENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKIH0KIAot
dm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3Zv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQ
QWRkcmVzcz4mIGFkZHJlc3NlcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0
ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSkpOwotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0
KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSk7Ci0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1f
aG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFk
ZHJlc3NlcyB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQordm9pZCBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBD
Rkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjpr
Q0ZIb3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWU6OnNpbmdsZXRvbigpLnJlc29sdmUoYWRkcmVzcywgdGhpcyk7CiB9CiAKLXZvaWQgTmV0d29y
a1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVz
cz4mIGFkZHJlc3NlcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKIHsKLSAgICBp
ZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikp
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6
OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuc3RvcFJlc29sdmUodGhpcyk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0
YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4yOThiZTFmMDk1ZWY1NDZlYjZkMWQwMDBhNWZiNTJk
YTJhYmM4YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjcsMzEgKzI3LDMyIEBACiAKICNpZiBV
U0UoTElCV0VCUlRDKQogCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAjaW5jbHVkZSAi
UlRDTmV0d29yay5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtSVENSZXNvbHZlciB7CitjbGFz
cyBOZXR3b3JrUlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpP
YnNlcnZlciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBFcnJvciB7IFVua25vd24sIENhbmNl
bGxlZCB9OwogCi0gICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJv
cj47CisgICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4+LCBFcnJvcj47CiAgICAg
dXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRk
cmVzc2VzT3JFcnJvciYmKT47CiAKLSAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdvcmtSVENSZXNvbHZlcigpOworICAgIGV4cGxp
Y2l0IE5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlciYmKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpOwogCi0gICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQ
QWRkcmVzcz4mKTsKKyAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBB
ZGRyZXNzPiYpIGZpbmFsOworICAgIHVpbnQ2NF90IGdldElkKCkgZmluYWwgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9OwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRl
bnRpZmllcjsKICAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAg
IFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNmIzZWIxZWY3Y2Jk
Nzg4YzQxYjYzMmUyNzU0MTk5OWYxYzMzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAg
LTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2lu
Y2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZv
aWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5m
bywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJU
X1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7
CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBu
b3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgorICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKGluZm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EqPihpbmZvKTsKKworICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENG
QXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNz
aW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2Vz
KTsKKyAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRk
cmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBk
YXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2Vz
LCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBh
ZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhhZGRyZXNzKSk7Cisg
ICAgfQorICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKworTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjp+TmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9v
cChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRN
b2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRy
KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5n
JiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Cisg
ICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2
ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3Qu
Z2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAg
ICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgp
LCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RvcCgpCit7Cisg
ICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlw
ZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFiNWZkYjY2ODcyMWU1OGE5Y2JkNThlMDg5NTg2OTExNGQ1OGE4MzgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVz
b2x2ZXIuaCIKKworI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIDogcHVibGljIE5ldHdvcmtS
VENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EoQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkg
ZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7Cisg
ICAgdm9pZCBzdG9wKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJl
Zj4gbV9ob3N0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0Uo
TElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNTM2MWFjY2Y4MjM2OTFjMzU3
ZDhlMTMzMWZkNDE1OTJjMzlkODE2NC4uNWI2MGMzZGRlNmZjMWFhMjExYzU3NDc0NGMyODU4MGIw
YmVkZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC00OCw2ICs0OCw4IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vz
c2lvblNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dFNvdXAuY3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcAorCiAgICAgUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3IuY3BwCiAgICAg
UGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAgICAgUGxhdGZvcm0vSVBDL3Vu
aXgvQ29ubmVjdGlvblVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA2MzlmZDZhN2U5OTAyZTY0MzU3MjkwNjg5YTFkM2RlMDJl
NGI0MWIxLi42MGFkMWRmZDY2YjJkMWM5ODk3ZTQ3ODI4ZDRiNzk3Mjg4MjM0ZjJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMCw2
ICs5MTAsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFE
REQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJCTQxMDQ4MkNFMURERDMy
NEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5o
ICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJC
NTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0
MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlG
RDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLzsgfTsKIAkJNDEx
QjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2
MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29j
a2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENN
b25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07
CkBAIC0zMjY5LDYgKzMyNzAsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRD
TmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAv
KiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEx
MkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExp
YldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2Vi
UlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkx
REU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTYyMDQsNiArNjIwNyw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdv
cmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBF
Njc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDExMkI1NDcxRjlGRDNBQjAw
RTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywKKwkJCQk0MTEyQjU0ODFG
OUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLywKIAkJCQk0MTMw
NzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8sCiAJCQkJNDEz
MDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLywKIAkJCQk0MTMw
NzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5tZXNzYWdlcy5pbiAqLywK
QEAgLTEwNTM2LDYgKzEwNTQxLDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyog
TmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMx
ODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNv
bHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyog
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkx
REU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8q
IE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333473</attachid>
            <date>2018-02-09 02:39:20 -0800</date>
            <delta_ts>2018-02-09 06:36:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180209113918.patch</filename>
            <type>text/plain</type>
            <size>42974</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uZjcxMTMzYTI4MjZmZTEyYTViYmU1M2I3NmQwMTJk
ZjRmZTg2MTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVl
U291cCBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNvbHZlUXVldWVTb3VwIGNsYXNz
IGZvciB0aGUgc291cCBwbGF0Zm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgYSBob3N0
bmFtZSwgaXQgc2VuZHMgdGhlCisgICAgICAgIG9ic2VydmVyIG9iamVjdCB3aXRoIHRoZSBjb21w
bGV0ZWQgbWV0aG9kIHRvIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB3aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRE5TUmVzb2x2ZVF1ZXVlLmg6IEFkZCBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkb2Vz
IG5vdCBkZXBlbmQgb24gdGhlIGxpYndlYnJ0YworICAgICAgICBjbGFzc2VzIHVzZWQgdG8gcmV0
dXJuIHRoZSByZXN1bHRzIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbi4gQWRkIGFuIE9ic2VydmVy
IGNsYXNzIHRvIHNlbmQgdGhlIHJlc3VsdCBhbmQKKyAgICAgICAgc3RvcmUgdGhlIGNvbXBsZXRp
b24gaGFuZGxlciBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpJUEFkZHJlc3MpOiBBZGQgbmV3IGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNz
OjpnZXQpOiBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHN0cnVjdCBzb2NrYWRkcl9pbiBpbiB0aGUg
SVBBZGRyZXNzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpPYnNl
cnZlcjo6Y29tcGxldGVkKTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIHRoZSBvYnNlcnZl
ciBjbGFzcyBBUEkuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVl
dWVDRi5oOiBBZGQgdGhlIG5ldyBtZXRob2RzLCB3ZSBoYXZlIHRvIGltcGxlbWVudCB0aGVzZSBt
ZXRob2RzIGFuZCBtb3ZlCisgICAgICAgIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjb2Rl
IGhlcmUuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtUmVzb2x2ZSk6
IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0Y6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNvbHZlKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaDogTmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNz
LCBhZGRpbmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0
IGFsbG93cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBwbGF0Zm9y
bSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBsZXRpb24g
aGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdp
dGggdGhlIHNvdXAgbGlicmFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtU3RvcFJlc29sdmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBw
cm9jZXNzIHdpdGggYQorICAgICAgICBHQ2FuY2VsbGFibGUuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5l
dCBjbGFzcy4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3QgZmFzdC9yZXBsYWNlZC9i
b3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVhbWVyLUNSSVRJQ0FMICoq
OiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdzZWdtZW50LT5mb3JtYXQg
PT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRmNGI0Li5iZTEwYTNhYTMz
ZDE4YzVmZTBkMjQwYmEzZDY4ZDQyNmJkMWRhYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhbiBzcGVjaWZpYyBD
b2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4gdGhlIGJhc2UgY2xhc3Ms
IG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAgICBhZ25vc3RpYyBhbmQg
ZGVwZW5kZW50IG9uIEROU1Jlc29sdmVRdWV1ZSBjbGFzcyB3aGljaCBlbmNhcHN1bGF0ZXMgdGhl
IHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmlu
ZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFz
IGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90
CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2VicnRjIGxpYnJhcnkuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBETlNSZXNvbHZlUXVldWUgYXMgdGhlIGJh
c2UgY2xhc3MKKyAgICAgICAgdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGluIHRoZSBkZWZhdWx0IHN0YXJ0IGFuZCBzdG9wIG1ldGhvZHMuIEFkZCB0aGUgaWRlbnRpZmll
ciBvZiB0aGUgcmVzb2x2ZSBvcGVyYXRpb24KKyAgICAgICAgdG8gdGhlIGNsYXNzLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcik6IEFkZCB0
aGUgaWRlbnRpZmllciBpbiB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcik6IFJlbW92ZSB0aGUgcGxhdGZv
cm0gc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpj
b21wbGV0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpz
dGFydCk6IEFkZCBhIG5ldyBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgRE5TUmVzb2x2ZVF1ZXVl
IGNsYXNzLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0
bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDog
UmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVR
dWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxh
dGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0
IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2Vu
ZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQg
Q29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUg
c3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBETlNSZXNvbHZlUXVldWUsIGNvY29hIGlt
cGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZQorICAgICAgICBjbGFz
cyBpbiB0aGUgZnV0dXJlIGFuZCByZW1vdmUgdGhpcyBjbGFzcywgbWFraW5nIHN1cmUgYWxsIHRo
ZSBwbGF0Zm9ybSBzcGVjaWZpYyBjbGFzcyBpcyBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5Lgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
OiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBB
ZGQgTmV0d29ya1JUQ1Jlc29sdmVyIGNvbXBpbGF0aW9uIGZvciBHVEsuCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EgY2xhc3MgdG8gdGhlIGNvbXBpbGF0aW9uLgorCiAyMDE4LTAyLTA4ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGEgd2F5IHRv
IGRpc2FibGUgW092ZXJyaWRlQnVpbHRpbnNdIGJlaGF2aW9yIGluIGEgZ2l2ZW4gRE9NV3JhcHBl
cldvcmxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGJhNjNmMmE2MmM4YjM4YWFjZjY4ZmYzY2UyYTE2ZmMyMTZhOTU5NC4uYTYy
MzU4YTEyOWU5NDJjZTAyMWYxZWU3MjQ2MzIxOTBhM2NkOTY4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5Niw2ICsyMTk2
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUxNiw2ICs5NTE3LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzIzMyw2ICsyMzIzNSw3IEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5o
ICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJ
CQkJN0VFNjg0NUMxMkQyNkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8s
CiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
ICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0
LmggKi8sCiAJCQkJRTEzRUYzNDcxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcCAqLywKQEAgLTI3MDY4LDYgKzI3MDcxLDggQEAKIAkJCQlGRDMxNjA5MTEy
QjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3
MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5l
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGNDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JCNTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9j
dW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1
ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThj
MmRmNDBjM2JmYmFjNWY1YzM5MjliY2EzMzkzMDBmMGEwMjYxOC4uY2M3NjU3ODJiY2ZlOWMwNDc0
MmJjNjViNjg5ZWVkMGQ3OTFmNDUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0Uo
U09VUCkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisj
aW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVTb3VwOworI2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1
ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNp
bmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlm
CisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0
aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZl
dGNoIGlzIHRyaWdnZXJlZCBieSBob3ZlcmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2lu
Zywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Np
bmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIuCiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2
ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUyLDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMg
cmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZlUXVldWUmIEROU1Jl
c29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5T
UmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2
ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwogfQpAQCAtMTI1LDQg
KzE0MSwxNCBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6dGltZXJGaXJlZCgpCiAgICAgICAgIG1f
dGltZXIuc3RhcnRPbmVTaG90KHJlc29sdmluZ1JldHJ5RGVsYXkpOwogfQogCit2b2lkIEROU1Jl
c29sdmVRdWV1ZTo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBPYnNlcnZlciogb2Jz
ZXJ2ZXIpCit7CisgICAgcGxhdGZvcm1SZXNvbHZlKGhvc3RuYW1lLCBvYnNlcnZlcik7Cit9CisK
K3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpzdG9wUmVzb2x2ZShPYnNlcnZlciogb2JzZXJ2ZXIpCit7
CisgICAgcGxhdGZvcm1TdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oCmluZGV4IGQyYTdhNzdiOGJjYzQ4ZDFjMDVhYmIxODY1ZDdlMmJkMmVmMGI4YWEu
LjNlNDQyYmYyYTIzNTA4MGFhZTE2YzFkM2U5MTBmYjE5NDQ0YThlNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjksMTgg
KzI5LDQ1IEBACiAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNs
dWRlIDxuZXRpbmV0L2luLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxpY2l0
IElQQWRkcmVzcyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGFkZHJlc3MpCisgICAgeworICAg
ICAgICBtZW1zZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwor
ICAgICAgICBtX2FkZHJlc3MgPSAqYWRkcmVzczsKKyAgICB9CisKKyAgICBjb25zdCBzdHJ1Y3Qg
c29ja2FkZHJfaW4qIGdldCgpIHsgcmV0dXJuICZtX2FkZHJlc3M7IH07CisKK3ByaXZhdGU6Cisg
ICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKIGNsYXNzIEROU1Jlc29sdmVR
dWV1ZSB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT47CiAKIHB1
YmxpYzoKKyAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFs
IH5PYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlZChj
b25zdCBWZWN0b3I8SVBBZGRyZXNzPiYpIHsgfTsKKyAgICAgICAgdmlydHVhbCB1aW50NjRfdCBn
ZXRJZCgpID0gMDsKKyAgICB9OworCisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVh
bCB+RE5TUmVzb2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVR
dWV1ZSYgc2luZ2xldG9uKCk7CiAKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSwgT2JzZXJ2ZXIqKTsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKE9ic2VydmVyKik7CiAgICAg
dm9pZCBhZGQoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CiAgICAgdm9pZCBkZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKQogICAgIHsKQEAgLTQ4LDEzICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIEROU1Jlc29sdmVRdWV1ZSgpOwotCiAgICAgYm9vbCBpc1VzaW5nUHJveHko
KTsKIAogICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCk7CiAgICAgdm9pZCBwbGF0Zm9ybVJl
c29sdmUoY29uc3QgU3RyaW5nJik7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1SZXNvbHZl
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIE9ic2VydmVyKikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybVN0b3BSZXNvbHZlKE9ic2VydmVyKikgPSAwOwogICAgIHZvaWQgdGltZXJGaXJl
ZCgpOwogCiAgICAgVGltZXIgbV90aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNDRk5ldC5jcHAKaW5kZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFjZDJk
N2M4NmU4ZTM3MjAyYy4uNjIxYjQ5N2Q0ODQ3NzhmMDIzNjZlMGRlMmZiYTI1NmNlZmRlMTIwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAK
QEAgLTI3LDggKzI3LDkgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5o
IgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1
ZUNGTmV0LmgiCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTEwMSw2
ICsxMDIsMTYgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQogICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9z
dCwga0NGSG9zdEFkZHJlc3NlcywgMCk7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCBETlNSZXNvbHZl
UXVldWU6Ok9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpwbGF0Zm9ybVN0b3BSZXNvbHZlKE9i
c2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2
b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKQEAgLTExMCwzICsxMjEsNCBAQCB2b2lkIHByZWZldGNoRE5TKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpCiB9CiAKIH0KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU4ZDkzNDdkNTVlZWZjZTU0NTY0YWJkOTM4ZTE0MDE0MmExNjBjMmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNG
TmV0LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQgOiBwdWJsaWMg
RE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVDRk5ldCgpID0g
ZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJp
bmcmIGhvc3RuYW1lLCBPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wUmVz
b2x2ZShPYnNlcnZlciopIGZpbmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmluZGV4IDVhMzFmNTk4NGMwY2U4ZWZhZTg5
ODFkOTNhMjgzMGNhMDcxY2EwYzQuLmY4NDY2ZDk5ZjA0ZjE5YjE1OWQyOTU5MGYyMTgzNzg1ZGUx
M2VkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5T
Q3VybC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZUN1cmwuaCIKIAogI2lmIFVTRShDVVJMKQogCkBAIC00Myw2ICs0MywxNiBAQCB2
b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9z
dG5hbWUgKi8pCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBETlNSZXNvbHZlUXVl
dWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgRE5T
UmVzb2x2ZVF1ZXVlOjpPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVN0b3BSZXNv
bHZlKE9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCiB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyM2Ez
NDcxOTlkMWFmNTBlNTZjYTFmNWNiMjFjZWRmZmRkYTVmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5o
CkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUN1cmwgOiBwdWJsaWMgRE5TUmVz
b2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVDdXJsKCkgPSBkZWZhdWx0
OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIE9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNvbHZlKE9i
c2VydmVyKikgZmluYWw7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ZWEzZmNlNGM1YjZhMTg5ZTU4NjM2OTVkOWE2NGE5NzQ2YTMxMzFiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZVNvdXAgOiBwdWJsaWMg
RE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVTb3VwKCkgPSBk
ZWZhdWx0OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUsIE9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BSZXNv
bHZlKE9ic2VydmVyKikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdD
YW5jZWxsYWJsZT4+IG1fb2JzZXJ2ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmluZGV4IGNhMTE0NTdkZGQyMjMzYzc0
M2ExOGNkZjgzODM2OTBmZjhmNjM5NTAuLjE3NDUwMDdkZjljZDllYWE3NjA3ZTZkOWQ5ZGQ4M2Ri
M2FmMzc5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
RE5TU291cC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZVNvdXAuaCIKIAogI2lmIFVTRShTT1VQKQogCkBAIC05MSw2ICs5MSwyNyBA
QCBzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQq
KQogICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50
KCk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFk
ZHJlc3MqIGFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAoc3Rh
dHVzICE9IFNPVVBfU1RBVFVTX09LKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGF0
YSk7CisgICAgYXV0byogb2JzZXJ2ZXIgPSBzdGF0aWNfY2FzdDxETlNSZXNvbHZlUXVldWU6Ok9i
c2VydmVyKj4oZGF0YSk7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiBhZGRyZXNz
ZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisKKyAgICBpZiAo
IXNvdXBfYWRkcmVzc19pc19yZXNvbHZlZChhZGRyZXNzKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaW50IGxlbjsKKyAgICBhdXRvKiBpcGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHN0cnVjdCBzb2NrYWRkcl9pbio+KHNvdXBfYWRkcmVzc19nZXRfc29ja2FkZHIoYWRkcmVzcywg
JmxlbikpOworICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNz
KGlwYWRkcmVzcykpOworCisgICAgb2JzZXJ2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQor
CiB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTk4LDYgKzExOSwyMyBA
QCB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCiAgICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9u
KCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2
ZWRDYWxsYmFjaywgbnVsbHB0cik7CiB9CiAKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxh
dGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVRdWV1ZTo6T2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBh
dXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxh
YmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLmdldCgp
LCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVy
LT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6cGxhdGZvcm1TdG9wUmVzb2x2ZShPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAg
aWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgp
KSkKKyAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQor
CiB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEz
YTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIuLjM4NzQyMGUwM2Q5NDFhMTQ5NjVlMWFlOGExMTMy
MjFiZGJhZDg5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtS
VENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNp
bmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5k
aWYKKwogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRo
cmVhZCgpCiB7CiAgICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tl
dFNlcnZlcigpOwpAQCAtMTY0LDEzICsxNzAsMjEgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6
OmRpZFJlY2VpdmVOZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4K
IAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3
b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAg
IGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRm
b3JtPihpZGVudGlmaWVyLCBbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpB
ZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQu
aGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVk
QWRkcmVzc0Vycm9yKDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRp
Zmllcik7CisgICAgICAgIGF1dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0gcmVzdWx0LnZhbHVlKCku
Z2V0KCk7CisgICAgICAgIHNpemVfdCBjb3VudCA9IHBsYXRmb3JtQWRkcmVzc2VzLnNpemUoKTsK
KyAgICAgICAgVmVjdG9yPFdlYktpdDo6UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7
CisgICAgICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAg
ICAgICBmb3IgKGF1dG8gYWRkcmVzcyA6IHBsYXRmb3JtQWRkcmVzc2VzKQorICAgICAgICAgICAg
YWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFk
ZHJlc3MoYWRkcmVzcy5nZXQoKS0+c2luX2FkZHIpKSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVk
QWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+
c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUo
cmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3
NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjJjMGUyN2JmZDg3OWY0Njc1NzJhMjk4OGI4MTNhNjJlYmM1
MDg0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIsNjggKzMyLDMyIEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RS
ZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwg
dm9pZCAqaW5mbykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwot
Ci0gICAgaWYgKGVycm9yLT5kb21haW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFu
ZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVz
b2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJv
b2xlYW4gcmVzdWx0OwotICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJh
eVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENv
dW50KHJlc29sdmVkQWRkcmVzc2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNz
PiBhZGRyZXNzZXM7Ci0gICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQp
OwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7
Ci0gICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQ
dHIoZGF0YSkpOwotICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6
OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0g
ICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOwotfQotCi1OZXR3b3JrUlRDUmVzb2x2
ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQotICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKK05ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtS
VENSZXNvbHZlcigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5n
ZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAg
IENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlm
IChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24p
KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRk
cmVzcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENG
SG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSkpOwotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwg
dGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudCht
X2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7Ci0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNv
bHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IGFkZHJlc3NlcyB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3Ao
KQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykK
IHsKLSAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdElu
Zm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKKyAgICBXZWJDb3JlOjpETlNS
ZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUoYWRkcmVzcywgdGhpcyk7CiB9CiAKLXZv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6
OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkK
IHsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOworICAg
IFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuc3RvcFJlc29sdmUodGhpcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2
ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4yOThiZTFmMDk1ZWY1NDZlYjZkMWQw
MDBhNWZiNTJkYTJhYmM4YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjcsMzEgKzI3LDMyIEBA
CiAKICNpZiBVU0UoTElCV0VCUlRDKQogCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAj
aW5jbHVkZSAiUlRDTmV0d29yay5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtSVENSZXNvbHZl
ciB7CitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6RE5TUmVzb2x2
ZVF1ZXVlOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBFcnJvciB7IFVua25v
d24sIENhbmNlbGxlZCB9OwogCi0gICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVk
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVz
cz4+LCBFcnJvcj47CisgICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4+LCBFcnJv
cj47CiAgICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47CiAKLSAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVz
b2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdvcmtSVENSZXNvbHZlcigpOwor
ICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlciYmKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAot
ICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05l
dHdvcms6OklQQWRkcmVzcz4mKTsKKyAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6SVBBZGRyZXNzPiYpIGZpbmFsOworICAgIHVpbnQ2NF90IGdldElkKCkgZmluYWwgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9OwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgorICAgIHVpbnQ2
NF90IG1faWRlbnRpZmllcjsKICAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5k
bGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNmIz
ZWIxZWY3Y2JkNzg4YzQxYjYzMmUyNzU0MTk5OWYxYzMzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlw
ZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCit7Cisg
ICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKKworICAgIGlmIChlcnJvci0+
ZG9tYWluKSB7CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQg
aW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgorICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQVNTRVJUKGluZm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nh
c3Q8TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EqPihpbmZvKTsKKworICAgIEJvb2xlYW4gcmVzdWx0
OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RH
ZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVk
QWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7
CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgIENG
RGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVk
QWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwor
ICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhhZGRy
ZXNzKSk7CisgICAgfQorICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKwor
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNvbHZlckNvY29hKENvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNv
Y29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2NoZWR1bGVG
cm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9v
cERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRy
LCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29u
c3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRl
V2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQo
KSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9v
cChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRN
b2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9o
b3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3Rv
cCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhv
c3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNWZkYjY2ODcyMWU1OGE5Y2JkNThlMDg5NTg2OTExNGQ1
OGE4MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJOZXR3
b3JrUlRDUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIDogcHVibGlj
IE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EoQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZl
ckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykg
ZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRy
PENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNTM2MWFjY2Y4
MjM2OTFjMzU3ZDhlMTMzMWZkNDE1OTJjMzlkODE2NC4uNWI2MGMzZGRlNmZjMWFhMjExYzU3NDc0
NGMyODU4MGIwYmVkZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC00OCw2ICs0OCw4
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcAorCiAgICAgUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3Iu
Y3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAgICAgUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MzlmZDZhN2U5OTAyZTY0MzU3MjkwNjg5
YTFkM2RlMDJlNGI0MWIxLi42MGFkMWRmZDY2YjJkMWM5ODk3ZTQ3ODI4ZDRiNzk3Mjg4MjM0ZjJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTkxMCw2ICs5MTAsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyogUlRDTmV0
d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJCTQxMDQ4
MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRD
TmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JU
Q1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICov
OyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLzsg
fTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEy
NDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5MURFODVG
MkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3
b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5IC8qIE5l
dHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5j
cHAgKi87IH07CkBAIC0zMjY5LDYgKzMyNzAsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2
RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENO
ZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIw
MEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5oOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29h
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3
MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0
d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0RkIwMDAz
OUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTYyMDQsNiArNjIwNyw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAwQjExRjUx
IC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0NzFGOUZE
M0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEyQjU0ODFG
OUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDExMkI1NDcx
RjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywKKwkJCQk0
MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLywK
IAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8s
CiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLywK
IAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5tZXNzYWdl
cy5pbiAqLywKQEAgLTEwNTM2LDYgKzEwNTQxLDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2RTIyMDBC
MTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2
MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdv
cmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBFQTdBMDBF
Njc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENTb2NrZXRN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0QkYzRjAw
QTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333482</attachid>
            <date>2018-02-09 06:36:29 -0800</date>
            <delta_ts>2018-02-09 06:58:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180209153628.patch</filename>
            <type>text/plain</type>
            <size>74838</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjMwNWM5Zjg2NzAxMWIzOGE2YWE0NzAzZWJkNjhmOWM2ZWE0ZGRkYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjYsMTEgKzI2LDM2IEBACiAj
aWZuZGVmIEROU19oCiAjZGVmaW5lIEROU19oCiAKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJ
UEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxpY2l0IElQQWRkcmVzcyhjb25zdCBzdHJ1Y3Qg
c29ja2FkZHJfaW4qIGFkZHJlc3MpCisgICAgeworICAgICAgICBtZW1zZXQoJm1fYWRkcmVzcywg
MCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworICAgICAgICBtX2FkZHJlc3MgPSAqYWRk
cmVzczsKKyAgICB9CisKKyAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGdldCgpIHsgcmV0
dXJuICZtX2FkZHJlc3M7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1f
YWRkcmVzczsKK307CisKK2NsYXNzIEROU1Jlc29sdmVPYnNlcnZlciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+RE5TUmVzb2x2ZU9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9p
ZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPElQQWRkcmVzcz4mKSB7IH07CisgICAgdmlydHVhbCB1
aW50NjRfdCBnZXRJZCgpID0gMDsKK307CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKik7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jlc29sdmVPYnNlcnZlciopOworCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNS
ZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVmNWMzOTI5YmNhMzM5MzAwZjBhMDI2
MTguLjUxNWVmNjVkM2M0YTExMDc4NjJlMTVhYzFlZDE1NmNlZmZiMjYwMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAg
LTI3LDExICsyNywyNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291
cC5oIgorI2VsaWYgVVNFKENGKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisj
ZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisjZW5kaWYK
KwogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0UoU09VUCkKK3VzaW5nIERO
U1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlU291cDsKKyNlbGlmIFVTRShD
RikKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ7
CisjZWxpZiBVU0UoQ1VSTCkKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVz
b2x2ZVF1ZXVlQ3VybDsKKyNlbmRpZgorCiAvLyBXaGVuIHJlc29sdmUgcXVldWUgaXMgZW1wdHks
IHdlIGZpcmUgYXN5bmMgcmVzb2x1dGlvbiByZXF1ZXN0cyBpbW1lZGlhdGVseSAod2hpY2ggaXMg
aW1wb3J0YW50IGlmIHRoZSBwcmVmZXRjaCBpcyB0cmlnZ2VyZWQgYnkgaG92ZXJpbmcpLgogLy8g
QnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdlIHNob3VsZCBjb2FsZXNjZSBpZGVudGljYWwgcmVx
dWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91dCB0aGUgRE5TIHJlc29sdmVyLgogc3RhdGljIGNv
bnN0IGludCBnTmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVseSA9IDQ7CkBAIC01MiwxNSArNjgsMTUg
QEAgc3RhdGljIGNvbnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9Owog
CiBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0
dXJuIHF1ZXVlOwogfQogCiBETlNSZXNvbHZlUXVldWU6OkROU1Jlc29sdmVRdWV1ZSgpCi0gICAg
OiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2ZVF1ZXVlOjp0aW1lckZpcmVkKQorICAgIDogbV9p
c1VzaW5nUHJveHkodHJ1ZSkKKyAgICAsIG1fdGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6
OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3RzSW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2lu
Z1Byb3h5KHRydWUpCiAgICAgLCBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkK
IHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2lsbCByZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2Yg
bV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCmluZGV4IGQyYTdhNzdiOGJjYzQ4ZDFjMDVhYmIx
ODY1ZDdlMmJkMmVmMGI4YWEuLjQ5MGQ3MjUxNzc4N2YyZGU4ZmM1OWEwYWU4OTg2OTdlMzAwMjBk
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2
ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZl
UXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBETlNSZXNvbHZlUXVldWVfaAogI2Rl
ZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisjaW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5
LDI5ICs0MCwzMyBAQCBjbGFzcyBETlNSZXNvbHZlUXVldWUgewogICAgIGZyaWVuZCBOZXZlckRl
c3Ryb3llZDxETlNSZXNvbHZlUXVldWU+OwogCiBwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVl
KCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3Rh
dGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xldG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
b2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKEROU1Jlc29sdmVPYnNlcnZlciopID0gMDsKICAg
ICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJl
cXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAgICB9
CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAgICBi
b29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKLSAg
ICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNVc2lu
Z1Byb3h5OwogCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHko
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAgc3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3Rz
SW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQcm94eTsKICAgICBkb3VibGUgbV9sYXN0UHJv
eHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFjZDJkN2M4NmU4ZTM3MjAyYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJr
aXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0K
LSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxDRk5ldHdvcmsv
Q0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJMb2Fk
ZXJSdW5Mb29wQ0YuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNV
c2luZ1Byb3h5KCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRp
bmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKLSAgICBp
ZiAoIXByb3h5U2V0dGluZ3MpIHsKLSAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJM
ID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVS
TCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxT
dHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0KLSAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQ
cm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotICAg
IFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkp
KTsKLQotICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFBy
b3h5QXJyYXkuZ2V0KCkpOwotICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdl
dENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgaWYgKGh0dHBQcm94eUNvdW50ID09
IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25h
cnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwg
a0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBQcm94eUNv
dW50ID0gMDsKLSAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rp
b25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1
ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtD
RlByb3h5VHlwZU5vbmUpKQotICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOwotCi0gICAgbV9p
c1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19Ci0KLXN0
YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlw
ZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBz
aW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBo
YXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KLSAgICBDRlJlbGVhc2UodGhlSG9z
dCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgUmV0
YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwg
aG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgIGlmICghaG9zdCkgewotICAg
ICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OwotICAg
IENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwg
YmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgotICAgIEJvb2xlYW4gcmVzdWx0ID0g
Q0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0jaWYgIVBMQVRGT1JNKFdJTikKLSAg
ICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4o
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSNlbHNlCi0gICAgLy8gT24gV2luZG93cywgd2Ug
cnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGll
bnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNl
bmRpZgotICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFk
ZHJlc3NlcywgMCk7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigp
LmFkZChob3N0bmFtZSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU3ZjhiZDExZjlhZjg4YTY5ZmNiY2Y3N2JmYTg5NzRkNGUwNDczZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxp
biBKYWNrc29uICA8Y29sbGluakB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisK
KyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPENGTmV0d29y
ay9DRk5ldHdvcmsuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5
c3RlbVByb3h5U2V0dGluZ3MoKSk7CisgICAgaWYgKCFwcm94eVNldHRpbmdzKSB7CisgICAgICAg
IG1faXNVc2luZ1Byb3h5ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRw
Oi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8i
KS5jcmVhdGVDRlVSTCgpOworCisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFy
cmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCks
IHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQ
cm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJM
LmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisKKyAgICBDRkluZGV4IGh0dHBQcm94eUNv
dW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBQcm94eUFycmF5LmdldCgpKTsKKyAgICBDRkluZGV4
IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkp
OworICAgIGlmIChodHRwUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGh0dHBQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlw
ZU5vbmUpKQorICAgICAgICBodHRwUHJveHlDb3VudCA9IDA7CisgICAgaWYgKGh0dHBzUHJveHlD
b3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQo
KSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0
cHNQcm94eUNvdW50ID0gMDsKKworICAgIG1faXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQg
fHwgaHR0cHNQcm94eUNvdW50OworfQorCitzdGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhv
c3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lk
KikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwgc2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0
aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBi
eSBub3cuCisgICAgQ0ZSZWxlYXNlKHRoZUhvc3QpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUNGTmV0OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9
IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSkpOworICAgIGlmICghaG9zdCkgeworICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENGSG9zdENsaWVudENvbnRleHQg
Y29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OworICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0g
aG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRD
YWxsYmFjaygpLgorICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhv
c3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisjaWYgIVBMQVRGT1JNKFdJTikKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5M
b29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVz
KTsKKyNlbHNlCisgICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdp
dGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxl
ZC4KKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxv
b3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyNlbmRpZgorICAgIENGSG9zdFN0YXJ0SW5m
b1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFkZHJlc3NlcywgMCk7Cit9CisKK3ZvaWQg
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAq
LyAsIEROU1Jlc29sdmVPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29sdmUoRE5T
UmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQwYzQ5OTI0YWRjOThhZjg2
MzA5ZDBiZGU3NDhjMTQ0MjM5Zjc0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgewor
cHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZvaWQg
cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKK307CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlND
dXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzMWY1OTg0YzBjZThlZmFlODk4MWQ5
M2EyODMwY2EwNzFjYTBjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVT
RShDVVJMKQotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICov
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1
ZXVlQ3VybC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE1NTVkZTQ1MGFmMDdjMWUyYjYzZjRhZDk1ZTVkMjZh
OTEyM2M3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisKKyNp
ZiBVU0UoQ1VSTCkKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjp1cGRhdGVJc1VzaW5nUHJveHko
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3Vy
bDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZl
KGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8gLCBETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9i
c2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2
ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAq
LykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVl
dWVDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEzZjYyM2UwNGM4MmM4YjZjYzU0N2ZkZmViM2UwZjcyNjY0
NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5T
UmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ3VybCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jl
c29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJl
c29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lk
IHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZv
cm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZhYzljMDUzNmE1NjBlNmNlM2QyMjBhYTE1YjlmZDM2ZDU2OTlm
YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNs
dWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Np
b24uaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gSW5pdGlhbGx5IHRydWUg
dG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0
dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsKK3N0YXRpYyBib29s
IGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKKworc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5
KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hp
ZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcwor
ICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMg
bm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KKyAgICAvLyByZXNvbHZpbmcg
aG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4g
b3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisgICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5l
Y3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBu
b3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEg
cHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAgICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJj
bXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30KKworc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5
KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlz
VXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKK3sKKyAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29s
dmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7Cisg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcg
c3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVy
aXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNp
bmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNh
bGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJE
YXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJl
c3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwor
fQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0
KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBk
aWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5n
SHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAgICBHUmVmUHRyPEdQ
cm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIo
KSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJlc29sdmVyKTsKKworICAgIGdfcHJveHlfcmVzb2x2
ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51
bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7
CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRw
czovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxi
YWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQorCitzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNr
KFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29s
dmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFkZHJlc3MsIGd1aW50IHN0YXR1
cywgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgYXV0byogb2JzZXJ2ZXIgPSBz
dGF0aWNfY2FzdDxETlNSZXNvbHZlT2JzZXJ2ZXIqPihkYXRhKTsKKworICAgIFZlY3RvcjxXZWJD
b3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSgxKTsKKworICAgIGlmICghc291cF9hZGRyZXNzX2lzX3Jlc29sdmVkKGFkZHJlc3Mp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgbGVuOworICAgIGF1dG8qIGlwYWRkcmVzcyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNz
X2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFw
cGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBhZGRyZXNzKSk7CisKKyAgICBvYnNlcnZlci0+Y29t
cGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZv
cm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJl
c29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6
OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNl
cnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNz
ID0gYWRvcHRHUmVmKHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkp
OworICAgIGF1dG8gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7
CisgICAgc291cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNz
aW9uX2dldF9hc3luY19jb250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3Vw
U2Vzc2lvbigpKSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2ssIG9ic2VydmVyKTsKKworICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlci0+Z2V0SWQoKSwg
V1RGTW92ZShjYW5jZWxsYWJsZSkpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0
b3BSZXNvbHZlKEROU1Jlc29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIGlmIChhdXRvIGNhbmNlbGxhYmxlID0gbV9vYnNlcnZlcnMu
dGFrZShvYnNlcnZlci0+Z2V0SWQoKSkpCisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNh
bmNlbGxhYmxlLmdldCgpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU3ZDFmZWYwN2YxN2IxMTVjYzhhY2ViNGMwNmQ1MDA1YjljZGQ1OWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVz
b2x2ZVF1ZXVlU291cC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1
ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291
cCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1
ZVNvdXAoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5T
UmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlz
VXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZl
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxH
Q2FuY2VsbGFibGU+PiBtX29ic2VydmVyczsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZmOGY2Mzk1MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0jaW5jbHVkZSA8bGlic291
cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xp
Yi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5
cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgotc3RhdGljIGJvb2wgaXNV
c2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRy
dWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiogdXJpcykKLXsKLSAgICAv
LyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4g
SWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1
c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhp
cyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQg
YmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFu
ZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVh
Y2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWluZwotICAgIC8vIHRvIGNv
bm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQu
Ci0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7
Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2
ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBp
c1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdV
bmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29s
dmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChlcnJvcikgewotICAgICAg
ICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczog
JXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAqaXNV
c2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgpKTsKLSAgICAqaXNVc2lu
Z1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQcm94eTsKLX0KLQotc3Rh
dGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2Us
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZl
UHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5
LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlS
ZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlf
UkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0
PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNV
c2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKLSAg
ICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94
eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUKHJl
c29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdl
dCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRw
VXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIs
IHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOwotfQot
Ci1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQq
KQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENv
dW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAg
c291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Np
b24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywg
bnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkK
LXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCku
YWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4
IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIuLjM4NzQyMGUwM2Q5NDFh
MTQ5NjVlMWFlOGExMTMyMjFiZGJhZDg5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDIs
NiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
K3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRD
UmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpU
aHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAgICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6
Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpAQCAtMTY0LDEzICsxNzAsMjEgQEAgdm9pZCBOZXR3
b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVOZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVy
KHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRv
IHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBp
ZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQp
IG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtS
VENSZXNvbHZlclBsYXRmb3JtPihpZGVudGlmaWVyLCBbdGhpcywgaWRlbnRpZmllcl0oTmV0d29y
a1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJy
b3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAg
ICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVz
b2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52
YWx1ZSgpKSwgaWRlbnRpZmllcik7CisgICAgICAgIGF1dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0g
cmVzdWx0LnZhbHVlKCkuZ2V0KCk7CisgICAgICAgIHNpemVfdCBjb3VudCA9IHBsYXRmb3JtQWRk
cmVzc2VzLnNpemUoKTsKKyAgICAgICAgVmVjdG9yPFdlYktpdDo6UlRDTmV0d29yazo6SVBBZGRy
ZXNzPiBhZGRyZXNzZXM7CisgICAgICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGNvdW50KTsKKworICAgICAgICBmb3IgKGF1dG8gYWRkcmVzcyA6IHBsYXRmb3JtQWRkcmVzc2Vz
KQorICAgICAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFk
ZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy5nZXQoKS0+c2luX2FkZHIpKSk7CisKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2
ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVyKTsKICAgICB9KTsK
ICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50
aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4
N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLmExM2I5Zjk2OTczZjg3YTRhY2Yy
YzM0MTM3NTM3MzNlNzVkOGYzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIsNjggKzMy
LDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUo
Q0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVh
bUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZv
LCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5kb21haW4pIHsKLSAgICAgICAgLy8gRklY
TUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0
aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7
Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihp
bmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRy
ZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotCi0gICAgc2l6ZV90IGNvdW50
ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0
d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNv
dW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7Ci0gICAgICAgIGF1
dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+
KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBw
ZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRk
cikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOwotfQotCi1O
ZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVy
KHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNv
bHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21S
dW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVm
YXVsdE1vZGUpOwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBs
ZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
RXJyb3I6OlVua25vd24pKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNv
bnN0IFN0cmluZyYgYWRkcmVzcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKIHsKLSAgICBtX2hv
c3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFk
ZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgIENGSG9zdENsaWVudENvbnRleHQg
Y29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIENG
SG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOwotICAg
IENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJy
ZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhv
c3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVs
bHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRD
UmVzb2x2ZXI6OnN0b3AoKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0
cmluZyYgYWRkcmVzcykKIHsKLSAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3Qu
Z2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKKyAg
ICBXZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJlc3MsIHRoaXMpOwogfQogCi12b2lkIE5ldHdvcmtS
VENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+
JiBhZGRyZXNzZXMpCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCiB7Ci0gICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpz
dG9wUmVzb2x2ZUROUyh0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5oCmluZGV4IDFiY2Y3MzZlNzY3YTY3MDRiNWNlOTdjZGE4YzcyM2JkZTM1ZTcyNzguLjg4
YzM3NzkxNzdmMzhkYjE1NTBhMTMwMzgxZjY4NDU4OGYwYzczMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5o
CkBAIC0yNywzMSArMjcsMzIgQEAKIAogI2lmIFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRlICJE
TlMuaCIKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9z
dC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya1JU
Q1Jlc29sdmVyIHsKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlciA6IHB1YmxpYyBXZWJDb3JlOjpE
TlNSZXNvbHZlT2JzZXJ2ZXIgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgRXJyb3IgeyBVbmtu
b3duLCBDYW5jZWxsZWQgfTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3Rl
ZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJl
c3M+PiwgRXJyb3I+OworICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRXJy
b3I+OwogICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OwogCi0gICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jl
c29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsK
KyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXImJik7CisgICAgdmlydHVhbCB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CiAK
LSAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7Ci0gICAgdm9pZCBzdG9wKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENO
ZXR3b3JrOjpJUEFkZHJlc3M+Jik7CisgICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OklQQWRkcmVzcz4mKSBmaW5hbDsKKyAgICB1aW50NjRfdCBnZXRJZCgpIGZpbmFsIHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKKyAgICB1aW50
NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgQ29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFu
ZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTZi
M2ViMWVmN2NiZDc4OGM0MWI2MzJlMjc1NDE5OTlmMWMzMzZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJS
VEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5
cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQorewor
ICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7CisKKyAgICBpZiAoZXJyb3It
PmRvbWFpbikgeworICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0
IGluZm8gaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVChpbmZvKTsKKyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19j
YXN0PE5ldHdvcmtSVENSZXNvbHZlckNvY29hKj4oaW5mbyk7CisKKyAgICBCb29sZWFuIHJlc3Vs
dDsKKyAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0
R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKKworICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZl
ZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2Vz
OworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgeworICAgICAgICBD
RkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZl
ZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAgICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsK
KyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoYWRk
cmVzcykpOworICAgIH0KKyAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisK
K05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYShDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxl
RnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNv
bnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0
ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSkpOworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0
KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1f
aG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0
b3AoKQoreworICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZI
b3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjVmZGI2Njg3MjFlNThhOWNiZDU4ZTA4OTU4NjkxMTRk
NThhODM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsxLDUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTmV0
d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSA6IHB1Ymxp
YyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIH5OZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSgpIGZpbmFsOworCisgICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3Mp
IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCitwcml2YXRlOgorICAgIFJldGFpblB0
cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDUzNjFhY2Nm
ODIzNjkxYzM1N2Q4ZTEzMzFmZDQxNTkyYzM5ZDgxNjQuLjViNjBjM2RkZTZmYzFhYTIxMWM1NzQ3
NDRjMjg1ODBiMGJlZGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDgsNiArNDgs
OCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCisgICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5jcHAKKwogICAgIFBsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9y
LmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAogICAgIFBsYXRm
b3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjM5ZmQ2YTdlOTkwMmU2NDM1NzI5MDY4
OWExZDNkZTAyZTRiNDFiMS4uNjBhZDFkZmQ2NmIyZDFjOTg5N2U0NzgyOGQ0Yjc5NzI4ODIzNGYy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC05MTAsNiArOTEwLDcgQEAKIAkJNDEwNDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05l
dHdvcmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0
ODJDRTFEREQzMjRGMDBGMDA2RDAgLyogUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJU
Q05ldHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtS
VENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAq
LzsgfTsKKwkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87
IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcx
MjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1
RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0
d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBO
ZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3Iu
Y3BwICovOyB9OwpAQCAtMzI2OSw2ICszMjcwLDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAw
NkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRD
TmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FC
MDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRG
NzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05l
dHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02MjA0LDYgKzYyMDcsOCBAQAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1
MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlG
RDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgx
RjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3
MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJ
NDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8s
CiAJCQkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICov
LAogCQkJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8s
CiAJCQkJNDEzMDc1OUQxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2Fn
ZXMuaW4gKi8sCkBAIC0xMDUzNiw2ICsxMDU0MSw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAw
QjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYw
NjBFMTE2NTQzMTg1MDBGMzI4MkUgLyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3
b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAw
RTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0Yw
MEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333483</attachid>
            <date>2018-02-09 06:58:14 -0800</date>
            <delta_ts>2018-02-09 07:01:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180209155813.patch</filename>
            <type>text/plain</type>
            <size>74868</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjJhZGNjOTg1ZTlmYmI2ODRhZGFhYTkwNzdhZTQ5ZTJlZTRhY2IzZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjYsMTEgKzI2LDM2IEBACiAj
aWZuZGVmIEROU19oCiAjZGVmaW5lIEROU19oCiAKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxpY2l0IElQQWRkcmVz
cyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGFkZHJlc3MpCisgICAgeworICAgICAgICBtZW1z
ZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworICAgICAgICBt
X2FkZHJlc3MgPSAqYWRkcmVzczsKKyAgICB9CisKKyAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qIGdldCgpIHsgcmV0dXJuICZtX2FkZHJlc3M7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0
IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEROU1Jl
c29sdmVPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZU9ic2VydmVy
KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPElQ
QWRkcmVzcz4mKSB7IH07CisgICAgdmlydHVhbCB1aW50NjRfdCBnZXRJZCgpID0gMDsKK307CisK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwg
RE5TUmVzb2x2ZU9ic2VydmVyKik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5T
KEROU1Jlc29sdmVPYnNlcnZlciopOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQw
YzNiZmJhYzVmNWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjUxNWVmNjVkM2M0YTExMDc4NjJlMTVh
YzFlZDE1NmNlZmZiMjYwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDExICsyNywyNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVAp
CisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5oIgorI2VsaWYgVVNFKENGKQorI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJE
TlNSZXNvbHZlUXVldWVDdXJsLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKyNpZiBVU0UoU09VUCkKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5T
UmVzb2x2ZVF1ZXVlU291cDsKKyNlbGlmIFVTRShDRikKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBs
YXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ7CisjZWxpZiBVU0UoQ1VSTCkKK3VzaW5nIERO
U1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ3VybDsKKyNlbmRpZgorCiAv
LyBXaGVuIHJlc29sdmUgcXVldWUgaXMgZW1wdHksIHdlIGZpcmUgYXN5bmMgcmVzb2x1dGlvbiBy
ZXF1ZXN0cyBpbW1lZGlhdGVseSAod2hpY2ggaXMgaW1wb3J0YW50IGlmIHRoZSBwcmVmZXRjaCBp
cyB0cmlnZ2VyZWQgYnkgaG92ZXJpbmcpLgogLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdl
IHNob3VsZCBjb2FsZXNjZSBpZGVudGljYWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91
dCB0aGUgRE5TIHJlc29sdmVyLgogc3RhdGljIGNvbnN0IGludCBnTmFtZXNUb1Jlc29sdmVJbW1l
ZGlhdGVseSA9IDQ7CkBAIC01MiwxNSArNjgsMTUgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgcmVz
b2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29s
dmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVz
b2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1
ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwogfQogCiBETlNSZXNvbHZl
UXVldWU6OkROU1Jlc29sdmVRdWV1ZSgpCi0gICAgOiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2
ZVF1ZXVlOjp0aW1lckZpcmVkKQorICAgIDogbV9pc1VzaW5nUHJveHkodHJ1ZSkKKyAgICAsIG1f
dGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVl
c3RzSW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCiAgICAgLCBtX2xhc3RQ
cm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2ls
bCByZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5o
CmluZGV4IGQyYTdhNzdiOGJjYzQ4ZDFjMDVhYmIxODY1ZDdlMmJkMmVmMGI4YWEuLjQ5MGQ3MjUx
Nzc4N2YyZGU4ZmM1OWEwYWU4OTg2OTdlMzAwMjBkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAog
I2lmbmRlZiBETlNSZXNvbHZlUXVldWVfaAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisj
aW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFzcyBETlNSZXNv
bHZlUXVldWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+Owog
CiBwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2
ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xl
dG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
LCBETlNSZXNvbHZlT2JzZXJ2ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZl
KEROU1Jlc29sdmVPYnNlcnZlciopID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAg
ICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAg
dm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNVc2luZ1Byb3h5OwogCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7
CiAKICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAg
ICAgc3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNp
bmdQcm94eTsKICAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlND
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFj
ZDJkN2M4NmU4ZTM3MjAyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE5TLmgiCi0j
aW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRl
ICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotI2lmIFBMQVRG
T1JNKElPUykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotI2lm
IFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKLSNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKLSAgICBpZiAoIXByb3h5U2V0dGluZ3MpIHsKLSAgICAg
ICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0
dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29t
LyIpLmNyZWF0ZUNGVVJMKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5
QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQo
KSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
c1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZV
UkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKLQotICAgIENGSW5kZXggaHR0cFByb3h5
Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwotICAgIENGSW5k
ZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQo
KSk7Ci0gICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlU
eXBlTm9uZSkpCi0gICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKLSAgICBpZiAoaHR0cHNQcm94
eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxD
RkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5Lmdl
dCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBo
dHRwc1Byb3h5Q291bnQgPSAwOwotCi0gICAgbV9pc1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3Vu
dCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENG
SG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZv
aWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVz
dENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5
IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVk
IGJ5IG5vdy4KLSAgICBDRlJlbGVhc2UodGhlSG9zdCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1
ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFk
b3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSkpOwotICAgIGlmICghaG9zdCkgewotICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENGSG9zdENsaWVudENvbnRleHQgY29u
dGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OwotICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9z
dC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxs
YmFjaygpLgotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3Qs
IGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Ci0jaWYgIVBMQVRGT1JNKFdJTikKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsK
LSNlbHNlCi0gICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGgg
Q0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4K
LSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3Ao
KSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNlbmRpZgotICAgIENGSG9zdFN0YXJ0SW5mb1Jl
c29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFkZHJlc3NlcywgMCk7Ci19Ci0KLXZvaWQgcHJl
ZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU3ZjhiZDExZjlhZjg4YTY5ZmNiY2Y3N2Jm
YTg5NzRkNGUwNDczZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKworI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVk
ZSAiTG9hZGVyUnVuTG9vcENGLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgfHwgUExB
VEZPUk0oSU9TKQorI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlz
VXNpbmdQcm94eSgpCit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0
aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7CisgICAg
aWYgKCFwcm94eVNldHRpbmdzKSB7CisgICAgICAgIG1faXNVc2luZ1Byb3h5ID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVS
TCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZV
UkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJM
U3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworCisgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdv
cmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgp
KSk7CisKKyAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBQ
cm94eUFycmF5LmdldCgpKTsKKyAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlH
ZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOworICAgIGlmIChodHRwUHJveHlDb3VudCA9
PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgpLCAwKSks
IGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwUHJveHlD
b3VudCA9IDA7CisgICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBr
Q0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsKKworICAgIG1f
aXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50OworfQorCitz
dGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5
cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwg
c2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUg
aGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cuCisgICAgQ0ZSZWxlYXNlKHRoZUhv
c3QpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5h
bWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGlmICghaG9zdCkg
eworICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9
OworICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0
IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgorICAgIEJvb2xlYW4gcmVz
dWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4
dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisjaWYgIVBMQVRGT1JNKFdJ
TikKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdl
dE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbHNlCisgICAgLy8gT24gV2luZG93
cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVy
ZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhS
dW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKKyNlbmRpZgorICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NG
SG9zdEFkZHJlc3NlcywgMCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnJlc29s
dmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNlcnZlciogLyog
b2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDRk5ldDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZl
ciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTQwYzQ5OTI0YWRjOThhZjg2MzA5ZDBiZGU3NDhjMTQ0MjM5Zjc0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVz
b2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVl
dWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDRk5l
dCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1
ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKERO
U1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNWEzMWY1OTg0YzBjZThlZmFlODk4MWQ5M2EyODMwY2EwNzFjYTBjNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShDVVJMKQotCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1
ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9z
dG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBwcmVmZXRjaERO
Uyhjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE1
NTVkZTQ1MGFmMDdjMWUyYjYzZjRhZDk1ZTVkMjZhOTEyM2M3NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJs
LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisKKyNpZiBVU0UoQ1VSTCkKKworI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZl
UXVldWVDdXJsOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0
cmluZyYgLyogaG9zdG5hbWUgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUg
Ki8gLCBETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUoRE5T
UmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEzZjYy
M2UwNGM4MmM4YjZjYzU0N2ZkZmViM2UwZjcyNjY0NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ3VybCA6IHB1YmxpYyBETlNSZXNv
bHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhYzljMDUz
NmE1NjBlNmNlM2QyMjBhYTE1YjlmZDM2ZDU2OTlmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAK
QEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291
cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRp
c2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cFByb3h5ID0gdHJ1ZTsKK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsK
Kworc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdl
IGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0
aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcworICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFs
IGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlz
IHNpbWlsYXIgdG8KKyAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBt
YW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisg
ICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBv
bmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVj
dCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAg
ICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30K
Kworc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwg
R0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNp
bmdQcm94eSkKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1
ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIs
IHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIs
IGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICppc1VzaW5n
UHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJv
eHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMg
dm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94
eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0
YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29s
dmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNP
TFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9v
bCo+KHVzZXJEYXRhKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNV
c2luZ1Byb3h5KCkKK3sKKyAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAg
ICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94
eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJl
c29sdmVyKTsKKworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdl
dCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRw
VXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIs
IHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQor
CitzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQq
KQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENv
dW50KCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291
cEFkZHJlc3MqIGFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAo
c3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQo
ZGF0YSk7CisgICAgYXV0byogb2JzZXJ2ZXIgPSBzdGF0aWNfY2FzdDxETlNSZXNvbHZlT2JzZXJ2
ZXIqPihkYXRhKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsK
KyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKworICAgIGlmICghc291
cF9hZGRyZXNzX2lzX3Jlc29sdmVkKGFkZHJlc3MpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bnQgbGVuOworICAgIGF1dG8qIGlwYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3Ry
dWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVu
KSk7CisgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBh
ZGRyZXNzKSk7CisKKyAgICBvYnNlcnZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK3Zv
aWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lv
bl9wcmVmZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3Ru
YW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOwor
fQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNvdXBfYWRkcmVzc19u
ZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2FuY2VsbGFibGUgPSBh
ZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRyZXNzX3Jlc29sdmVf
YXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19jb250ZXh0KFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JD
cmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2FuY2VsbGFibGUuZ2V0
KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssIG9ic2VydmVyKTsKKworICAgIG1fb2Jz
ZXJ2ZXJzLmFkZChvYnNlcnZlci0+Z2V0SWQoKSwgV1RGTW92ZShjYW5jZWxsYWJsZSkpOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKEROU1Jlc29sdmVPYnNlcnZl
ciogb2JzZXJ2ZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChh
dXRvIGNhbmNlbGxhYmxlID0gbV9vYnNlcnZlcnMudGFrZShvYnNlcnZlci0+Z2V0SWQoKSkpCisg
ICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZDFmZWYwN2YxN2IxMTVj
YzhhY2ViNGMwNmQ1MDA1YjljZGQ1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRlZmF1bHQ7CisgICAgdm9p
ZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZp
bmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2
YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxHQ2FuY2VsbGFibGU+PiBtX29ic2VydmVyczsK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNT
b3VwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQz
YTE4Y2RmODM4MzY5MGZmOGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291
cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQot
Ci0jaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdv
cmtTZXNzaW9uLmgiCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxs
eSB0cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHBy
b3h5IHNldHRpbmdzLgotc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0
aWMgYm9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29s
dmVQcm94eShjaGFyKiogdXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJs
ZSBwcm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxp
c3QgaXMKLSAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBw
cmVmZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVz
b2x2aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVy
bmVkIGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0
byBjb25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3
ZSBhcmUgbm90IHRyeWluZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hl
dGhlciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMg
JiYgc3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29s
dmVQcm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBi
b29sKiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIo
KSkpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVy
bWluaW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQ
cm94eSh1cmlzLmdldCgpKTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8
fCBpc1VzaW5nSHR0cHNQcm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0
dHBVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lk
KiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3Vy
Y2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRh
dGEpKTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2so
R09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17
Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAm
aXNVc2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRy
PEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3Jr
U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQ
dHIoKSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVz
b2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIs
IG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94
eSk7Ci0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJo
dHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNh
bGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxi
YWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2
ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRl
U291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEo
KSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0
Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3
YzBmMGJjY2YyMzcyMTIuLjM4NzQyMGUwM2Q5NDFhMTQ5NjVlMWFlOGExMTMyMjFiZGJhZDg5MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBs
YXRmb3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JU
Q1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGlj
IGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAg
ICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpA
QCAtMTY0LDEzICsxNzAsMjEgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVO
ZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3
b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2
ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihpZGVudGlm
aWVyLCBbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVy
cm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6
OkVycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9y
KDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZl
cjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7CisgICAg
ICAgIGF1dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCk7CisgICAg
ICAgIHNpemVfdCBjb3VudCA9IHBsYXRmb3JtQWRkcmVzc2VzLnNpemUoKTsKKyAgICAgICAgVmVj
dG9yPFdlYktpdDo6UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgICAgIGFk
ZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3IgKGF1
dG8gYWRkcmVzcyA6IHBsYXRmb3JtQWRkcmVzc2VzKQorICAgICAgICAgICAgYWRkcmVzc2VzLnVu
Y2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVz
cy5nZXQoKS0+c2luX2FkZHIpKSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRy
ZXNzZXMpLCBpZGVudGlmaWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVz
cyk7CiAgICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2
YzNmZjAxNmUuLmExM2I5Zjk2OTczZjg3YTRhY2YyYzM0MTM3NTM3MzNlNzVkOGYzNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIsNjggKzMyLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdElu
Zm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykK
LXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVy
cm9yLT5kb21haW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUs
IGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0
aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0
OwotICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RH
ZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVk
QWRkcmVzc2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7
Ci0gICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENG
RGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVk
QWRkcmVzc2VzLCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwot
ICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhy
dGM6OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXIt
PmNvbXBsZXRlZChhZGRyZXNzZXMpOwotfQotCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtS
VENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDog
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigp
CiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNldENs
aWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3ZvaWQg
TmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdp
dGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSkpOwotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCks
IHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3Ao
bV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7Ci0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9z
dC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJl
c3NlcyB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQordm9pZCBOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBDRkhv
c3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZI
b3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
bV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKKyAgICBXZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJl
c3MsIHRoaXMpOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCit2b2lkIE5ldHdvcmtS
VENSZXNvbHZlcjo6c3RvcCgpCiB7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IGFkZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpzdG9wUmVzb2x2ZUROUyh0aGlzKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCmluZGV4IDFiY2Y3MzZlNzY3YTY3
MDRiNWNlOTdjZGE4YzcyM2JkZTM1ZTcyNzguLjg4YzM3NzkxNzdmMzhkYjE1NTBhMTMwMzgxZjY4
NDU4OGYwYzczMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCkBAIC0yNywzMSArMjcsMzIgQEAKIAogI2lm
IFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJSVENOZXR3b3Jr
LmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK2NsYXNzIE5ldHdvcmtS
VENSZXNvbHZlciA6IHB1YmxpYyBXZWJDb3JlOjpETlNSZXNvbHZlT2JzZXJ2ZXIgewogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgRXJyb3IgeyBVbmtub3duLCBDYW5jZWxsZWQgfTsKIAotICAgIHVz
aW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNv
bnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJyb3I+OworICAgIHVzaW5nIEFk
ZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRXJyb3I+OwogICAgIHVzaW5nIENvbXBsZXRpb25I
YW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+
OwogCi0gICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYp
OwotICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVz
b2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdmly
dHVhbCB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CiAKLSAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcyk7Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNv
bnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZv
aWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7CisgICAg
dm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4mKSBmaW5hbDsK
KyAgICB1aW50NjRfdCBnZXRJZCgpIGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfTsKIAot
cHJpdmF0ZToKK3Byb3RlY3RlZDoKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgQ29t
cGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0
UmVmPiBtX2hvc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTZiM2ViMWVmN2NiZDc4OGM0MWI2MzJlMjc1NDE5
OTlmMWMzMzZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShD
Rkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFt
RXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQoreworICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8s
ICF0eXBlSW5mbyk7CisKKyAgICBpZiAoZXJyb3ItPmRvbWFpbikgeworICAgICAgICAvLyBGSVhN
RTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHByb3ZpZGVkIGluIHRo
ZSBjYWxsYmFjay4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChpbmZvKTsK
KyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENSZXNvbHZlckNvY29h
Kj4oaW5mbyk7CisKKyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29sdmVk
QWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVz
dWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVfdCBj
b3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9yPFJU
Q05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBjb3VudDsgKytpbmRleCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYp
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAg
ICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tl
ZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICByZXNvbHZl
ci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYShDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNv
Y29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBD
RlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0
U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAg
ICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENv
bnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9Owor
ICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQp
OworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BH
ZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3Nl
cywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3Zv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbElu
Zm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNz
ZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJy
b3I6OkNhbmNlbGxlZCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjVm
ZGI2Njg3MjFlNThhOWNiZDU4ZTA4OTU4NjkxMTRkNThhODM4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNs
dWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSA6IHB1YmxpYyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpIGZpbmFsOworCisgICAgdm9p
ZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZp
bmFsOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IDUzNjFhY2NmODIzNjkxYzM1N2Q4ZTEzMzFmZDQxNTkyYzM5
ZDgxNjQuLjViNjBjM2RkZTZmYzFhYTIxMWM1NzQ3NDRjMjg1ODBiMGJlZGRkN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDgsNiArNDgsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09V
UkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogICAg
IE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCisg
ICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKwogICAgIFBs
YXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4
L0F0dGFjaG1lbnRVbml4LmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNjM5ZmQ2YTdlOTkwMmU2NDM1NzI5MDY4OWExZDNkZTAyZTRiNDFiMS4uNjBhZDFkZmQ2
NmIyZDFjOTg5N2U0NzgyOGQ0Yjc5NzI4ODIzNGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTAsNiArOTEwLDcgQEAKIAkJNDEw
NDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8q
IFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAgLyogUlRD
TmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1
NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDExMkI1NTUxRkEwRUE3QTAw
RTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRG
NzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0
d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1Nv
Y2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJ
CTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIw
MDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpAQCAtMzI2OSw2ICszMjcw
LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENS
ZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAw
RTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0
aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tl
dC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5l
dHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
U29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjA0LDYgKzYyMDcsOCBA
QAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVz
c2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtS
VENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1OTgxREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3NTk5MURFODRGQjAwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1OUQxREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDUzNiw2ICsxMDU0
MSw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUgLyogTmV0
d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQx
MTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMx
ODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333484</attachid>
            <date>2018-02-09 07:01:47 -0800</date>
            <delta_ts>2018-02-12 04:07:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180209160145.patch</filename>
            <type>text/plain</type>
            <size>74868</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjJhZGNjOTg1ZTlmYmI2ODRhZGFhYTkwNzdhZTQ5ZTJlZTRhY2IzZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjYsMTEgKzI2LDM2IEBACiAj
aWZuZGVmIEROU19oCiAjZGVmaW5lIEROU19oCiAKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxpY2l0IElQQWRkcmVz
cyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGFkZHJlc3MpCisgICAgeworICAgICAgICBtZW1z
ZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworICAgICAgICBt
X2FkZHJlc3MgPSAqYWRkcmVzczsKKyAgICB9CisKKyAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qIGdldCgpIHsgcmV0dXJuICZtX2FkZHJlc3M7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0
IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEROU1Jl
c29sdmVPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZU9ic2VydmVy
KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPElQ
QWRkcmVzcz4mKSB7IH07CisgICAgdmlydHVhbCB1aW50NjRfdCBnZXRJZCgpID0gMDsKK307CisK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwg
RE5TUmVzb2x2ZU9ic2VydmVyKik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5T
KEROU1Jlc29sdmVPYnNlcnZlciopOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQw
YzNiZmJhYzVmNWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjUxNWVmNjVkM2M0YTExMDc4NjJlMTVh
YzFlZDE1NmNlZmZiMjYwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDExICsyNywyNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVAp
CisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5oIgorI2VsaWYgVVNFKENGKQorI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJE
TlNSZXNvbHZlUXVldWVDdXJsLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKyNpZiBVU0UoU09VUCkKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5T
UmVzb2x2ZVF1ZXVlU291cDsKKyNlbGlmIFVTRShDRikKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBs
YXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ7CisjZWxpZiBVU0UoQ1VSTCkKK3VzaW5nIERO
U1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ3VybDsKKyNlbmRpZgorCiAv
LyBXaGVuIHJlc29sdmUgcXVldWUgaXMgZW1wdHksIHdlIGZpcmUgYXN5bmMgcmVzb2x1dGlvbiBy
ZXF1ZXN0cyBpbW1lZGlhdGVseSAod2hpY2ggaXMgaW1wb3J0YW50IGlmIHRoZSBwcmVmZXRjaCBp
cyB0cmlnZ2VyZWQgYnkgaG92ZXJpbmcpLgogLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdl
IHNob3VsZCBjb2FsZXNjZSBpZGVudGljYWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91
dCB0aGUgRE5TIHJlc29sdmVyLgogc3RhdGljIGNvbnN0IGludCBnTmFtZXNUb1Jlc29sdmVJbW1l
ZGlhdGVseSA9IDQ7CkBAIC01MiwxNSArNjgsMTUgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgcmVz
b2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29s
dmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVz
b2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1
ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwogfQogCiBETlNSZXNvbHZl
UXVldWU6OkROU1Jlc29sdmVRdWV1ZSgpCi0gICAgOiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2
ZVF1ZXVlOjp0aW1lckZpcmVkKQorICAgIDogbV9pc1VzaW5nUHJveHkodHJ1ZSkKKyAgICAsIG1f
dGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVl
c3RzSW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCiAgICAgLCBtX2xhc3RQ
cm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2ls
bCByZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5o
CmluZGV4IGQyYTdhNzdiOGJjYzQ4ZDFjMDVhYmIxODY1ZDdlMmJkMmVmMGI4YWEuLjQ5MGQ3MjUx
Nzc4N2YyZGU4ZmM1OWEwYWU4OTg2OTdlMzAwMjBkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAog
I2lmbmRlZiBETlNSZXNvbHZlUXVldWVfaAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisj
aW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFzcyBETlNSZXNv
bHZlUXVldWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+Owog
CiBwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2
ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xl
dG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
LCBETlNSZXNvbHZlT2JzZXJ2ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZl
KEROU1Jlc29sdmVPYnNlcnZlciopID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAg
ICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAg
dm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNVc2luZ1Byb3h5OwogCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7
CiAKICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAg
ICAgc3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNp
bmdQcm94eTsKICAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlND
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFj
ZDJkN2M4NmU4ZTM3MjAyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE5TLmgiCi0j
aW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRl
ICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotI2lmIFBMQVRG
T1JNKElPUykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotI2lm
IFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKLSNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKLSAgICBpZiAoIXByb3h5U2V0dGluZ3MpIHsKLSAgICAg
ICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0
dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29t
LyIpLmNyZWF0ZUNGVVJMKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5
QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQo
KSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
c1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZV
UkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKLQotICAgIENGSW5kZXggaHR0cFByb3h5
Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwotICAgIENGSW5k
ZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQo
KSk7Ci0gICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlU
eXBlTm9uZSkpCi0gICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKLSAgICBpZiAoaHR0cHNQcm94
eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxD
RkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5Lmdl
dCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBo
dHRwc1Byb3h5Q291bnQgPSAwOwotCi0gICAgbV9pc1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3Vu
dCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENG
SG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZv
aWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVz
dENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5
IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVk
IGJ5IG5vdy4KLSAgICBDRlJlbGVhc2UodGhlSG9zdCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1
ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFk
b3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSkpOwotICAgIGlmICghaG9zdCkgewotICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENGSG9zdENsaWVudENvbnRleHQgY29u
dGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OwotICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9z
dC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxs
YmFjaygpLgotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3Qs
IGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Ci0jaWYgIVBMQVRGT1JNKFdJTikKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsK
LSNlbHNlCi0gICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGgg
Q0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4K
LSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3Ao
KSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNlbmRpZgotICAgIENGSG9zdFN0YXJ0SW5mb1Jl
c29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFkZHJlc3NlcywgMCk7Ci19Ci0KLXZvaWQgcHJl
ZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU3ZjhiZDExZjlhZjg4YTY5ZmNiY2Y3N2Jm
YTg5NzRkNGUwNDczZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKworI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVk
ZSAiTG9hZGVyUnVuTG9vcENGLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgfHwgUExB
VEZPUk0oSU9TKQorI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlz
VXNpbmdQcm94eSgpCit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0
aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7CisgICAg
aWYgKCFwcm94eVNldHRpbmdzKSB7CisgICAgICAgIG1faXNVc2luZ1Byb3h5ID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVS
TCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZV
UkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJM
U3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworCisgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdv
cmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgp
KSk7CisKKyAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBQ
cm94eUFycmF5LmdldCgpKTsKKyAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlH
ZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOworICAgIGlmIChodHRwUHJveHlDb3VudCA9
PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgpLCAwKSks
IGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwUHJveHlD
b3VudCA9IDA7CisgICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBr
Q0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsKKworICAgIG1f
aXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50OworfQorCitz
dGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5
cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwg
c2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUg
aGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cuCisgICAgQ0ZSZWxlYXNlKHRoZUhv
c3QpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5h
bWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGlmICghaG9zdCkg
eworICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9
OworICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0
IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgorICAgIEJvb2xlYW4gcmVz
dWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4
dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisjaWYgIVBMQVRGT1JNKFdJ
TikKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdl
dE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbHNlCisgICAgLy8gT24gV2luZG93
cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVy
ZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhS
dW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKKyNlbmRpZgorICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NG
SG9zdEFkZHJlc3NlcywgMCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnJlc29s
dmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNlcnZlciogLyog
b2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDRk5ldDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZl
ciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTQwYzQ5OTI0YWRjOThhZjg2MzA5ZDBiZGU3NDhjMTQ0MjM5Zjc0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVz
b2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVl
dWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDRk5l
dCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1
ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKERO
U1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNWEzMWY1OTg0YzBjZThlZmFlODk4MWQ5M2EyODMwY2EwNzFjYTBjNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShDVVJMKQotCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1
ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9z
dG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBwcmVmZXRjaERO
Uyhjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE1
NTVkZTQ1MGFmMDdjMWUyYjYzZjRhZDk1ZTVkMjZhOTEyM2M3NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJs
LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisKKyNpZiBVU0UoQ1VSTCkKKworI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZl
UXVldWVDdXJsOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0
cmluZyYgLyogaG9zdG5hbWUgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUg
Ki8gLCBETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUoRE5T
UmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEzZjYy
M2UwNGM4MmM4YjZjYzU0N2ZkZmViM2UwZjcyNjY0NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ3VybCA6IHB1YmxpYyBETlNSZXNv
bHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhYzljMDUz
NmE1NjBlNmNlM2QyMjBhYTE1YjlmZDM2ZDU2OTlmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAK
QEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291
cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRp
c2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cFByb3h5ID0gdHJ1ZTsKK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsK
Kworc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdl
IGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0
aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcworICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFs
IGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlz
IHNpbWlsYXIgdG8KKyAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBt
YW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisg
ICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBv
bmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVj
dCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAg
ICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30K
Kworc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwg
R0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNp
bmdQcm94eSkKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1
ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIs
IHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIs
IGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICppc1VzaW5n
UHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJv
eHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMg
dm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94
eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0
YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29s
dmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNP
TFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9v
bCo+KHVzZXJEYXRhKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNV
c2luZ1Byb3h5KCkKK3sKKyAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAg
ICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94
eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJl
c29sdmVyKTsKKworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdl
dCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRw
VXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIs
IHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQor
CitzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQq
KQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENv
dW50KCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291
cEFkZHJlc3MqIGFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAo
c3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQo
ZGF0YSk7CisgICAgYXV0byogb2JzZXJ2ZXIgPSBzdGF0aWNfY2FzdDxETlNSZXNvbHZlT2JzZXJ2
ZXIqPihkYXRhKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsK
KyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKworICAgIGlmICghc291
cF9hZGRyZXNzX2lzX3Jlc29sdmVkKGFkZHJlc3MpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bnQgbGVuOworICAgIGF1dG8qIGlwYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3Ry
dWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVu
KSk7CisgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBh
ZGRyZXNzKSk7CisKKyAgICBvYnNlcnZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK3Zv
aWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lv
bl9wcmVmZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3Ru
YW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOwor
fQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNvdXBfYWRkcmVzc19u
ZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2FuY2VsbGFibGUgPSBh
ZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRyZXNzX3Jlc29sdmVf
YXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19jb250ZXh0KFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JD
cmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2FuY2VsbGFibGUuZ2V0
KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssIG9ic2VydmVyKTsKKworICAgIG1fb2Jz
ZXJ2ZXJzLmFkZChvYnNlcnZlci0+Z2V0SWQoKSwgV1RGTW92ZShjYW5jZWxsYWJsZSkpOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKEROU1Jlc29sdmVPYnNlcnZl
ciogb2JzZXJ2ZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChh
dXRvIGNhbmNlbGxhYmxlID0gbV9vYnNlcnZlcnMudGFrZShvYnNlcnZlci0+Z2V0SWQoKSkpCisg
ICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZDFmZWYwN2YxN2IxMTVj
YzhhY2ViNGMwNmQ1MDA1YjljZGQ1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRlZmF1bHQ7CisgICAgdm9p
ZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZp
bmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2
YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxHQ2FuY2VsbGFibGU+PiBtX29ic2VydmVyczsK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNT
b3VwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQz
YTE4Y2RmODM4MzY5MGZmOGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291
cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQot
Ci0jaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdv
cmtTZXNzaW9uLmgiCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxs
eSB0cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHBy
b3h5IHNldHRpbmdzLgotc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0
aWMgYm9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29s
dmVQcm94eShjaGFyKiogdXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJs
ZSBwcm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxp
c3QgaXMKLSAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBw
cmVmZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVz
b2x2aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVy
bmVkIGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0
byBjb25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3
ZSBhcmUgbm90IHRyeWluZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hl
dGhlciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMg
JiYgc3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29s
dmVQcm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBi
b29sKiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIo
KSkpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVy
bWluaW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQ
cm94eSh1cmlzLmdldCgpKTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8
fCBpc1VzaW5nSHR0cHNQcm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0
dHBVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lk
KiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3Vy
Y2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRh
dGEpKTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2so
R09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17
Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAm
aXNVc2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRy
PEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3Jr
U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQ
dHIoKSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVz
b2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIs
IG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94
eSk7Ci0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJo
dHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNh
bGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxi
YWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2
ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRl
U291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEo
KSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0
Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3
YzBmMGJjY2YyMzcyMTIuLjM4NzQyMGUwM2Q5NDFhMTQ5NjVlMWFlOGExMTMyMjFiZGJhZDg5MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBs
YXRmb3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JU
Q1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGlj
IGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAg
ICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpA
QCAtMTY0LDEzICsxNzAsMjEgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVO
ZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3
b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2
ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihpZGVudGlm
aWVyLCBbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVy
cm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6
OkVycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9y
KDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZl
cjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7CisgICAg
ICAgIGF1dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCk7CisgICAg
ICAgIHNpemVfdCBjb3VudCA9IHBsYXRmb3JtQWRkcmVzc2VzLnNpemUoKTsKKyAgICAgICAgVmVj
dG9yPFdlYktpdDo6UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgICAgIGFk
ZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3IgKGF1
dG8gYWRkcmVzcyA6IHBsYXRmb3JtQWRkcmVzc2VzKQorICAgICAgICAgICAgYWRkcmVzc2VzLnVu
Y2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVz
cy5nZXQoKS0+c2luX2FkZHIpKSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRy
ZXNzZXMpLCBpZGVudGlmaWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVz
cyk7CiAgICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2
YzNmZjAxNmUuLmExM2I5Zjk2OTczZjg3YTRhY2YyYzM0MTM3NTM3MzNlNzVkOGYzNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIsNjggKzMyLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdElu
Zm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykK
LXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVy
cm9yLT5kb21haW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUs
IGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0
aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0
OwotICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RH
ZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVk
QWRkcmVzc2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7
Ci0gICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENG
RGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVk
QWRkcmVzc2VzLCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwot
ICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhy
dGM6OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXIt
PmNvbXBsZXRlZChhZGRyZXNzZXMpOwotfQotCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtS
VENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDog
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigp
CiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNldENs
aWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3ZvaWQg
TmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdp
dGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSkpOwotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCks
IHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3Ao
bV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7Ci0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9z
dC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJl
c3NlcyB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQordm9pZCBOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBDRkhv
c3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZI
b3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
bV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKKyAgICBXZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJl
c3MsIHRoaXMpOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCit2b2lkIE5ldHdvcmtS
VENSZXNvbHZlcjo6c3RvcCgpCiB7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IGFkZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpzdG9wUmVzb2x2ZUROUyh0aGlzKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCmluZGV4IDFiY2Y3MzZlNzY3YTY3
MDRiNWNlOTdjZGE4YzcyM2JkZTM1ZTcyNzguLjg4YzM3NzkxNzdmMzhkYjE1NTBhMTMwMzgxZjY4
NDU4OGYwYzczMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCkBAIC0yNywzMSArMjcsMzIgQEAKIAogI2lm
IFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJSVENOZXR3b3Jr
LmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK2NsYXNzIE5ldHdvcmtS
VENSZXNvbHZlciA6IHB1YmxpYyBXZWJDb3JlOjpETlNSZXNvbHZlT2JzZXJ2ZXIgewogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgRXJyb3IgeyBVbmtub3duLCBDYW5jZWxsZWQgfTsKIAotICAgIHVz
aW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNv
bnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJyb3I+OworICAgIHVzaW5nIEFk
ZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRXJyb3I+OwogICAgIHVzaW5nIENvbXBsZXRpb25I
YW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+
OwogCi0gICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYp
OwotICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVz
b2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdmly
dHVhbCB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CiAKLSAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcyk7Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNv
bnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZv
aWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7CisgICAg
dm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4mKSBmaW5hbDsK
KyAgICB1aW50NjRfdCBnZXRJZCgpIGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfTsKIAot
cHJpdmF0ZToKK3Byb3RlY3RlZDoKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgQ29t
cGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0
UmVmPiBtX2hvc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTZiM2ViMWVmN2NiZDc4OGM0MWI2MzJlMjc1NDE5
OTlmMWMzMzZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShD
Rkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFt
RXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQoreworICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8s
ICF0eXBlSW5mbyk7CisKKyAgICBpZiAoZXJyb3ItPmRvbWFpbikgeworICAgICAgICAvLyBGSVhN
RTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHByb3ZpZGVkIGluIHRo
ZSBjYWxsYmFjay4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChpbmZvKTsK
KyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENSZXNvbHZlckNvY29h
Kj4oaW5mbyk7CisKKyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29sdmVk
QWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVz
dWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVfdCBj
b3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9yPFJU
Q05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBjb3VudDsgKytpbmRleCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYp
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAg
ICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tl
ZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICByZXNvbHZl
ci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYShDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNv
Y29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBD
RlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0
U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAg
ICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENv
bnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9Owor
ICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQp
OworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BH
ZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3Nl
cywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3Zv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbElu
Zm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNz
ZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJy
b3I6OkNhbmNlbGxlZCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjVm
ZGI2Njg3MjFlNThhOWNiZDU4ZTA4OTU4NjkxMTRkNThhODM4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNs
dWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSA6IHB1YmxpYyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpIGZpbmFsOworCisgICAgdm9p
ZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZp
bmFsOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IDUzNjFhY2NmODIzNjkxYzM1N2Q4ZTEzMzFmZDQxNTkyYzM5
ZDgxNjQuLjViNjBjM2RkZTZmYzFhYTIxMWM1NzQ3NDRjMjg1ODBiMGJlZGRkN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDgsNiArNDgsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09V
UkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogICAg
IE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCisg
ICAgTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKwogICAgIFBs
YXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4
L0F0dGFjaG1lbnRVbml4LmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNjM5ZmQ2YTdlOTkwMmU2NDM1NzI5MDY4OWExZDNkZTAyZTRiNDFiMS4uNjBhZDFkZmQ2
NmIyZDFjOTg5N2U0NzgyOGQ0Yjc5NzI4ODIzNGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTAsNiArOTEwLDcgQEAKIAkJNDEw
NDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8q
IFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAgLyogUlRD
TmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1
NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDExMkI1NTUxRkEwRUE3QTAw
RTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRG
NzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0
d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1Nv
Y2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJ
CTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIw
MDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpAQCAtMzI2OSw2ICszMjcw
LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENS
ZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAw
RTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0
aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tl
dC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5l
dHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
U29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjA0LDYgKzYyMDcsOCBA
QAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVz
c2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtS
VENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1OTgxREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3NTk5MURFODRGQjAwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1OUQxREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDUzNiw2ICsxMDU0
MSw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUgLyogTmV0
d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQx
MTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMx
ODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333588</attachid>
            <date>2018-02-12 04:07:10 -0800</date>
            <delta_ts>2018-02-12 05:25:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180212130708.patch</filename>
            <type>text/plain</type>
            <size>74939</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjJhZGNjOTg1ZTlmYmI2ODRhZGFhYTkwNzdhZTQ5ZTJlZTRhY2IzZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjYsMTEgKzI2LDM2IEBACiAj
aWZuZGVmIEROU19oCiAjZGVmaW5lIEROU19oCiAKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxpY2l0IElQQWRkcmVz
cyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGFkZHJlc3MpCisgICAgeworICAgICAgICBtZW1z
ZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworICAgICAgICBt
X2FkZHJlc3MgPSAqYWRkcmVzczsKKyAgICB9CisKKyAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qIGdldCgpIHsgcmV0dXJuICZtX2FkZHJlc3M7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0
IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEROU1Jl
c29sdmVPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZU9ic2VydmVy
KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPElQ
QWRkcmVzcz4mKSB7IH07CisgICAgdmlydHVhbCB1aW50NjRfdCBnZXRJZCgpID0gMDsKK307CisK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7
CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwg
RE5TUmVzb2x2ZU9ic2VydmVyKik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5T
KEROU1Jlc29sdmVPYnNlcnZlciopOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQw
YzNiZmJhYzVmNWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjUxNWVmNjVkM2M0YTExMDc4NjJlMTVh
YzFlZDE1NmNlZmZiMjYwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDExICsyNywyNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVAp
CisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5oIgorI2VsaWYgVVNFKENGKQorI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJE
TlNSZXNvbHZlUXVldWVDdXJsLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKyNpZiBVU0UoU09VUCkKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5T
UmVzb2x2ZVF1ZXVlU291cDsKKyNlbGlmIFVTRShDRikKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBs
YXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ7CisjZWxpZiBVU0UoQ1VSTCkKK3VzaW5nIERO
U1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ3VybDsKKyNlbmRpZgorCiAv
LyBXaGVuIHJlc29sdmUgcXVldWUgaXMgZW1wdHksIHdlIGZpcmUgYXN5bmMgcmVzb2x1dGlvbiBy
ZXF1ZXN0cyBpbW1lZGlhdGVseSAod2hpY2ggaXMgaW1wb3J0YW50IGlmIHRoZSBwcmVmZXRjaCBp
cyB0cmlnZ2VyZWQgYnkgaG92ZXJpbmcpLgogLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdl
IHNob3VsZCBjb2FsZXNjZSBpZGVudGljYWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91
dCB0aGUgRE5TIHJlc29sdmVyLgogc3RhdGljIGNvbnN0IGludCBnTmFtZXNUb1Jlc29sdmVJbW1l
ZGlhdGVseSA9IDQ7CkBAIC01MiwxNSArNjgsMTUgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgcmVz
b2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29s
dmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVz
b2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1
ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwogfQogCiBETlNSZXNvbHZl
UXVldWU6OkROU1Jlc29sdmVRdWV1ZSgpCi0gICAgOiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2
ZVF1ZXVlOjp0aW1lckZpcmVkKQorICAgIDogbV9pc1VzaW5nUHJveHkodHJ1ZSkKKyAgICAsIG1f
dGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVl
c3RzSW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCiAgICAgLCBtX2xhc3RQ
cm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2ls
bCByZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5o
CmluZGV4IGQyYTdhNzdiOGJjYzQ4ZDFjMDVhYmIxODY1ZDdlMmJkMmVmMGI4YWEuLjQ5MGQ3MjUx
Nzc4N2YyZGU4ZmM1OWEwYWU4OTg2OTdlMzAwMjBkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAog
I2lmbmRlZiBETlNSZXNvbHZlUXVldWVfaAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisj
aW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFzcyBETlNSZXNv
bHZlUXVldWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+Owog
CiBwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2
ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xl
dG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
LCBETlNSZXNvbHZlT2JzZXJ2ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZl
KEROU1Jlc29sdmVPYnNlcnZlciopID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAg
ICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAg
dm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNVc2luZ1Byb3h5OwogCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7
CiAKICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAg
ICAgc3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNp
bmdQcm94eTsKICAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlND
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFj
ZDJkN2M4NmU4ZTM3MjAyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE5TLmgiCi0j
aW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRl
ICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotI2lmIFBMQVRG
T1JNKElPUykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotI2lm
IFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKLSNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKLSAgICBpZiAoIXByb3h5U2V0dGluZ3MpIHsKLSAgICAg
ICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0
dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29t
LyIpLmNyZWF0ZUNGVVJMKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5
QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQo
KSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
c1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZV
UkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKLQotICAgIENGSW5kZXggaHR0cFByb3h5
Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwotICAgIENGSW5k
ZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQo
KSk7Ci0gICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlU
eXBlTm9uZSkpCi0gICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKLSAgICBpZiAoaHR0cHNQcm94
eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxD
RkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5Lmdl
dCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBo
dHRwc1Byb3h5Q291bnQgPSAwOwotCi0gICAgbV9pc1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3Vu
dCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENG
SG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZv
aWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVz
dENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5
IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVk
IGJ5IG5vdy4KLSAgICBDRlJlbGVhc2UodGhlSG9zdCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1
ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFk
b3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSkpOwotICAgIGlmICghaG9zdCkgewotICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENGSG9zdENsaWVudENvbnRleHQgY29u
dGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OwotICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9z
dC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxs
YmFjaygpLgotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3Qs
IGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Ci0jaWYgIVBMQVRGT1JNKFdJTikKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsK
LSNlbHNlCi0gICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGgg
Q0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4K
LSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3Ao
KSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNlbmRpZgotICAgIENGSG9zdFN0YXJ0SW5mb1Jl
c29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFkZHJlc3NlcywgMCk7Ci19Ci0KLXZvaWQgcHJl
ZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU3ZjhiZDExZjlhZjg4YTY5ZmNiY2Y3N2Jm
YTg5NzRkNGUwNDczZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKworI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVk
ZSAiTG9hZGVyUnVuTG9vcENGLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgfHwgUExB
VEZPUk0oSU9TKQorI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlz
VXNpbmdQcm94eSgpCit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0
aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7CisgICAg
aWYgKCFwcm94eVNldHRpbmdzKSB7CisgICAgICAgIG1faXNVc2luZ1Byb3h5ID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVS
TCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZV
UkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJM
U3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworCisgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdv
cmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgp
KSk7CisKKyAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBQ
cm94eUFycmF5LmdldCgpKTsKKyAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlH
ZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOworICAgIGlmIChodHRwUHJveHlDb3VudCA9
PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgpLCAwKSks
IGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwUHJveHlD
b3VudCA9IDA7CisgICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBr
Q0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsKKworICAgIG1f
aXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50OworfQorCitz
dGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5
cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwg
c2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUg
aGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cuCisgICAgQ0ZSZWxlYXNlKHRoZUhv
c3QpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5h
bWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGlmICghaG9zdCkg
eworICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9
OworICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0
IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgorICAgIEJvb2xlYW4gcmVz
dWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4
dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisjaWYgIVBMQVRGT1JNKFdJ
TikKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdl
dE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbHNlCisgICAgLy8gT24gV2luZG93
cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVy
ZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhS
dW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKKyNlbmRpZgorICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NG
SG9zdEFkZHJlc3NlcywgMCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnJlc29s
dmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNlcnZlciogLyog
b2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDRk5ldDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZl
ciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTQwYzQ5OTI0YWRjOThhZjg2MzA5ZDBiZGU3NDhjMTQ0MjM5Zjc0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVz
b2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVl
dWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDRk5l
dCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1
ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKERO
U1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNWEzMWY1OTg0YzBjZThlZmFlODk4MWQ5M2EyODMwY2EwNzFjYTBjNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShDVVJMKQotCi0jaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1
ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9z
dG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBwcmVmZXRjaERO
Uyhjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE1
NTVkZTQ1MGFmMDdjMWUyYjYzZjRhZDk1ZTVkMjZhOTEyM2M3NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJs
LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisKKyNpZiBVU0UoQ1VSTCkKKworI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZl
UXVldWVDdXJsOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0
cmluZyYgLyogaG9zdG5hbWUgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUg
Ki8gLCBETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUoRE5T
UmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEzZjYy
M2UwNGM4MmM4YjZjYzU0N2ZkZmViM2UwZjcyNjY0NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ3VybCA6IHB1YmxpYyBETlNSZXNv
bHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhYzljMDUz
NmE1NjBlNmNlM2QyMjBhYTE1YjlmZDM2ZDU2OTlmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAK
QEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291
cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24u
aCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRp
c2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cFByb3h5ID0gdHJ1ZTsKK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsK
Kworc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdl
IGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0
aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcworICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFs
IGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlz
IHNpbWlsYXIgdG8KKyAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBt
YW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisg
ICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBv
bmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVj
dCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAg
ICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30K
Kworc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwg
R0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNp
bmdQcm94eSkKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1
ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIs
IHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIs
IGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICppc1VzaW5n
UHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJv
eHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMg
dm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94
eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0
YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29s
dmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNP
TFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9v
bCo+KHVzZXJEYXRhKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNV
c2luZ1Byb3h5KCkKK3sKKyAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAg
ICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94
eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJl
c29sdmVyKTsKKworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdl
dCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRw
VXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIs
IHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQor
CitzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQq
KQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENv
dW50KCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291
cEFkZHJlc3MqIGFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAo
c3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQo
ZGF0YSk7CisgICAgYXV0byogb2JzZXJ2ZXIgPSBzdGF0aWNfY2FzdDxETlNSZXNvbHZlT2JzZXJ2
ZXIqPihkYXRhKTsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsK
KyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKworICAgIGlmICghc291
cF9hZGRyZXNzX2lzX3Jlc29sdmVkKGFkZHJlc3MpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bnQgbGVuOworICAgIGF1dG8qIGlwYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3Ry
dWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVu
KSk7CisgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBh
ZGRyZXNzKSk7CisKKyAgICBvYnNlcnZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK3Zv
aWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lv
bl9wcmVmZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3Ru
YW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOwor
fQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNvdXBfYWRkcmVzc19u
ZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2FuY2VsbGFibGUgPSBh
ZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRyZXNzX3Jlc29sdmVf
YXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19jb250ZXh0KFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JD
cmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2FuY2VsbGFibGUuZ2V0
KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssIG9ic2VydmVyKTsKKworICAgIG1fb2Jz
ZXJ2ZXJzLmFkZChvYnNlcnZlci0+Z2V0SWQoKSwgV1RGTW92ZShjYW5jZWxsYWJsZSkpOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKEROU1Jlc29sdmVPYnNlcnZl
ciogb2JzZXJ2ZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChh
dXRvIGNhbmNlbGxhYmxlID0gbV9vYnNlcnZlcnMudGFrZShvYnNlcnZlci0+Z2V0SWQoKSkpCisg
ICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZDFmZWYwN2YxN2IxMTVj
YzhhY2ViNGMwNmQ1MDA1YjljZGQ1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRlZmF1bHQ7CisgICAgdm9p
ZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZp
bmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2
YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgR1JlZlB0cjxHQ2FuY2VsbGFibGU+PiBtX29ic2VydmVyczsK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNT
b3VwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQz
YTE4Y2RmODM4MzY5MGZmOGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291
cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQot
Ci0jaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdv
cmtTZXNzaW9uLmgiCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxs
eSB0cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHBy
b3h5IHNldHRpbmdzLgotc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0
aWMgYm9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29s
dmVQcm94eShjaGFyKiogdXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJs
ZSBwcm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxp
c3QgaXMKLSAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBw
cmVmZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVz
b2x2aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVy
bmVkIGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0
byBjb25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3
ZSBhcmUgbm90IHRyeWluZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hl
dGhlciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMg
JiYgc3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29s
dmVQcm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBi
b29sKiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIo
KSkpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVy
bWluaW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQ
cm94eSh1cmlzLmdldCgpKTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8
fCBpc1VzaW5nSHR0cHNQcm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0
dHBVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lk
KiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3Vy
Y2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRh
dGEpKTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2so
R09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17
Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAm
aXNVc2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRy
PEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3Jr
U2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQ
dHIoKSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVz
b2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIs
IG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94
eSk7Ci0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJo
dHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNh
bGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxi
YWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2
ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRl
U291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEo
KSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0
Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3
YzBmMGJjY2YyMzcyMTIuLjM4NzQyMGUwM2Q5NDFhMTQ5NjVlMWFlOGExMTMyMjFiZGJhZDg5MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBs
YXRmb3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JU
Q1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGlj
IGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAg
ICAgYXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpA
QCAtMTY0LDEzICsxNzAsMjEgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVO
ZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3
b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2
ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihpZGVudGlm
aWVyLCBbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVy
cm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6
OkVycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9y
KDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZl
cjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7CisgICAg
ICAgIGF1dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCk7CisgICAg
ICAgIHNpemVfdCBjb3VudCA9IHBsYXRmb3JtQWRkcmVzc2VzLnNpemUoKTsKKyAgICAgICAgVmVj
dG9yPFdlYktpdDo6UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgICAgIGFk
ZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3IgKGF1
dG8gYWRkcmVzcyA6IHBsYXRmb3JtQWRkcmVzc2VzKQorICAgICAgICAgICAgYWRkcmVzc2VzLnVu
Y2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVz
cy5nZXQoKS0+c2luX2FkZHIpKSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRy
ZXNzZXMpLCBpZGVudGlmaWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVz
cyk7CiAgICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2
YzNmZjAxNmUuLmExM2I5Zjk2OTczZjg3YTRhY2YyYzM0MTM3NTM3MzNlNzVkOGYzNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIsNjggKzMyLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdElu
Zm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykK
LXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVy
cm9yLT5kb21haW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUs
IGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0
aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0
OwotICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RH
ZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVk
QWRkcmVzc2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7
Ci0gICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENG
RGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVk
QWRkcmVzc2VzLCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwot
ICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhy
dGM6OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXIt
PmNvbXBsZXRlZChhZGRyZXNzZXMpOwotfQotCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtS
VENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDog
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigp
CiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNldENs
aWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3ZvaWQg
TmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdp
dGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSkpOwotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCks
IHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3Ao
bV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7Ci0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9z
dC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJl
c3NlcyB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQordm9pZCBOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBDRkhv
c3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZI
b3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
bV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4
cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKKyAgICBXZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJl
c3MsIHRoaXMpOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCit2b2lkIE5ldHdvcmtS
VENSZXNvbHZlcjo6c3RvcCgpCiB7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7
IGFkZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpzdG9wUmVzb2x2ZUROUyh0aGlzKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCmluZGV4IDFiY2Y3MzZlNzY3YTY3
MDRiNWNlOTdjZGE4YzcyM2JkZTM1ZTcyNzguLmQ2MzhjYTlmMjFiM2E0MzFhNTE0NjAxMmMxMDY4
NDA0YWZjOTUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCkBAIC0yNywzMSArMjcsMzcgQEAKIAogI2lm
IFVTRShMSUJXRUJSVEMpCiAKKyNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJSVENOZXR3b3Jr
LmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBJUEFkZHJlc3M7CitjbGFzcyBETlNSZXNvbHZlT2JzZXJ2ZXI7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgewor
Y2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIDogcHVibGljIFdlYkNvcmU6OkROU1Jlc29sdmVPYnNl
cnZlciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBFcnJvciB7IFVua25vd24sIENhbmNlbGxl
ZCB9OwogCi0gICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47
CisgICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4+LCBFcnJvcj47CiAgICAgdXNp
bmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVz
c2VzT3JFcnJvciYmKT47CiAKLSAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxl
dGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdvcmtSVENSZXNvbHZlcigpOworICAgIGV4cGxpY2l0
IE5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
ciYmKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3Rh
cnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpOwogCi0gICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRk
cmVzcz4mKTsKKyAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRy
ZXNzPiYpIGZpbmFsOworICAgIHVpbnQ2NF90IGdldElkKCkgZmluYWwgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9OwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRp
ZmllcjsKICAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJl
dGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNmIzZWIxZWY3Y2JkNzg4
YzQxYjYzMmUyNzU0MTk5OWYxYzMzNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAs
MCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1
ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQg
cmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywg
Y29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VO
VVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3Qg
cHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUKGluZm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EqPihpbmZvKTsKKworICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJy
YXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5n
KGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwor
CisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsK
KyAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVz
c2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRh
ID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBp
bmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0
cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRy
ZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhhZGRyZXNzKSk7CisgICAg
fQorICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKworTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNvbHZlckNvY29hKENvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcCht
X2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsK
K30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAg
Q0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWRO
YW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0
KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBC
b29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBr
Q0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAg
Q0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6
a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFiNWZkYjY2ODcyMWU1OGE5Y2JkNThlMDg5NTg2OTExNGQ1OGE4MzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2
ZXIuaCIKKworI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIDogcHVibGljIE5ldHdvcmtSVENS
ZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eo
Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmlu
YWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAg
dm9pZCBzdG9wKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4g
bV9ob3N0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNTM2MWFjY2Y4MjM2OTFjMzU3ZDhl
MTMzMWZkNDE1OTJjMzlkODE2NC4uNWI2MGMzZGRlNmZjMWFhMjExYzU3NDc0NGMyODU4MGIwYmVk
ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC00OCw2ICs0OCw4IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lv
blNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dFNvdXAuY3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcAorCiAgICAgUGxhdGZvcm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3IuY3BwCiAgICAgUGxh
dGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA2MzlmZDZhN2U5OTAyZTY0MzU3MjkwNjg5YTFkM2RlMDJlNGI0
MWIxLi42MGFkMWRmZDY2YjJkMWM5ODk3ZTQ3ODI4ZDRiNzk3Mjg4MjM0ZjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMCw2ICs5
MTAsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQy
RkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYw
MEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICov
OyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3
MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0MTEy
QjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNB
QjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLzsgfTsKIAkJNDExQjIy
NjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAv
KiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0
LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25p
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBA
IC0zMjY5LDYgKzMyNzAsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0
d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEy
QjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1
NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldl
YlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRD
TmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0
d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBO
ZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4
NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYy
MDQsNiArNjIwNyw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtS
VENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUg
LyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3
OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywKKwkJCQk0MTEyQjU0ODFGOUZE
M0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLywKIAkJCQk0MTMwNzU5
ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1
OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5
RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5tZXNzYWdlcy5pbiAqLywKQEAg
LTEwNTM2LDYgKzEwNTQxLDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0
d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUw
MEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4
NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5l
dHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333590</attachid>
            <date>2018-02-12 05:26:04 -0800</date>
            <delta_ts>2018-02-12 05:47:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180212142602.patch</filename>
            <type>text/plain</type>
            <size>74969</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLmI2NzgwYzVkZTEyZDE5ODc0MDI0Yjk1OGQ3N2Y4MDNhZjE0MTA2NjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM2IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVBBZGRy
ZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJUEFkZHJlc3MoY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAgICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7
CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBnZXQoKSB7IHJldHVybiAm
bV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJl
c3M7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBETlNSZXNvbHZlT2JzZXJ2ZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkROU1Jlc29sdmVPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxJUEFkZHJlc3M+JikgeyB9OworICAg
IHZpcnR1YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7Cit9OworCiBXRUJDT1JFX0VYUE9SVCB2b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwotfQorV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUmVzb2x2ZUROUyhETlNSZXNvbHZlT2JzZXJ2
ZXIqKTsKIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThjMmRmNDBjM2JmYmFjNWY1YzM5MjliY2Ez
MzkzMDBmMGEwMjYxOC4uNTE1ZWY2NWQzYzRhMTEwNzg2MmUxNWFjMWVkMTU2Y2VmZmIyNjAxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwu
aCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQ
KQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVTb3VwOwor
I2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZl
UXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZv
cm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlmCisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1
ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5
ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBieSBob3Zl
cmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlk
ZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIu
CiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUy
LDE1ICs2OCwxNSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyByZXNvbHZpbmdSZXRyeURlbGF5IHsg
MTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+IHF1ZXVlOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7
CiAKICAgICByZXR1cm4gcXVldWU7CiB9CiAKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1
ZXVlKCkKLSAgICA6IG1fdGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQp
CisgICAgOiBtX2lzVXNpbmdQcm94eSh0cnVlKQorICAgICwgbV90aW1lcigqdGhpcywgJkROU1Jl
c29sdmVRdWV1ZTo6dGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdHNJbkZsaWdodCgwKQotICAg
ICwgbV9pc1VzaW5nUHJveHkodHJ1ZSkKICAgICAsIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0No
ZWNrVGltZSgwKQogewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5pdGlh
bCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNj
NDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uNDkwZDcyNTE3Nzg3ZjJkZThmYzU5YTBhZTg5
ODY5N2UzMDAyMGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEROU1Jlc29sdmVR
dWV1ZV9oCiAjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9oCiAKKyNpbmNsdWRlICJETlMuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgpAQCAtMzksMjkgKzQwLDMzIEBAIGNsYXNzIEROU1Jlc29sdmVRdWV1ZSB7CiAgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT47CiAKIHB1YmxpYzoKKyAgICBETlNS
ZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNSZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7
CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaW5nbGV0b24oKTsKIAorICAgIHZpcnR1
YWwgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVy
KikgPSAwOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQg
ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CiAgICAgICAgIC0tbV9yZXF1ZXN0c0luRmxp
Z2h0OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQorcHJvdGVj
dGVkOgogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAKLSAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQ
cm94eSgpOwotICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpOworICAgIGJv
b2wgbV9pc1VzaW5nUHJveHk7CiAKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlz
VXNpbmdQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIAogICAgIFRpbWVyIG1fdGlt
ZXI7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1lczsKICAgICBzdGQ6OmF0b21pYzxpbnQ+
IG1fcmVxdWVzdHNJbkZsaWdodDsKLSAgICBib29sIG1faXNVc2luZ1Byb3h5OwogICAgIGRvdWJs
ZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxj
b2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
PENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2lu
Y2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsu
aD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdz
KCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBtX2lzVXNpbmdQcm94eSA9
IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIp
LmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJMID0gVVJM
KFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsK
LQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZO
ZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdl
dCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0
Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0
aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3VudCA9IENGQXJyYXlHZXRD
b3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBodHRwc1Byb3h5Q291bnQg
PSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsKLSAgICBpZiAoaHR0cFBy
b3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwUHJveHlBcnJheS5n
ZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAg
aHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291bnQgPT0gMSAmJiBDRkVx
dWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlU
eXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBzUHJveHlDb3VudCA9IDA7
Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3Vu
dDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENG
SG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCi17Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBv
ayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGlj
IHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgotICAgIENGUmVs
ZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgaWYgKCFo
b3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCi0gICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSNpZiAhUExBVEZP
Uk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5M
b29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vsc2UKLSAgICAvLyBPbiBX
aW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlz
IHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhv
c3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTdmOGJkMTFmOWFmODhhNjlmY2JjZjc3YmZhODk3NGQ0ZTA0NzNkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0Yu
aCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShJT1MpCisjaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5l
dHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAoIXByb3h5U2V0dGluZ3Mp
IHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4
YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
aHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBD
RlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJM
KGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKworICAgIENGSW5kZXgg
aHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwor
ICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlB
cnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwg
a0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKKyAgICBpZiAo
aHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0
aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94
eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQor
ICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1VzaW5nUHJveHkgPSBodHRw
UHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRpYyB2b2lkIGNsaWVudENh
bGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1F
cnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVt
ZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEg
c2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGlu
aXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0
UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7CisgICAgICAgIGRlY3JlbWVu
dFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ0ZIb3N0Q2xp
ZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07CisgICAgQ0ZIb3N0UmVmIGxl
YWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBm
cm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGll
bnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQorICAgIENGSG9zdFNjaGVk
dWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0
ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdp
bGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwg
bG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworI2VuZGlmCisgICAgQ0ZI
b3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsK
K30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIC8q
IGhvc3RuYW1lICovICwgRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDBjNDk5
MjRhZGM5OGFmODYzMDlkMGJkZTc0OGMxNDQyMzlmNzQzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGTmV0IDogcHVibGljIEROU1Jlc29s
dmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTMxZjU5ODRjMGNl
OGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5o
IgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJv
eHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgLyog
aG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNv
bHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTU1NWRlNDUwYWYwN2MxZTJiNjNm
NGFkOTVlNWQyNmE5MTIzYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1
cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlz
VXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAq
LykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1
cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNl
cnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8q
IG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVz
b2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0RO
U1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTNmNjIzZTA0YzgyYzhiNmNjNTQ3ZmRm
ZWIzZTBmNzI2NjQ1MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6
CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAg
dm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1
ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVz
b2x2ZVF1ZXVlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFjOWMwNTM2YTU2MGU2Y2UzZDIyMGFhMTVi
OWZkMzZkNTY5OWZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApAQCAtMCwwICsxLDE0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisKKyNpZiBVU0UoU09V
UCkKKworI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNvdXBO
ZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBJbml0
aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3RheXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2
ZSBwcm94eSBzZXR0aW5ncy4KK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwUHJveHkgPSB0cnVlOwor
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0cnVlOworCitzdGF0aWMgYm9vbCBkaWRS
ZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCit7CisgICAgLy8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9z
c2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkkuIElmIHRoZSBmaXJzdCBpdGVtIGluIHRo
ZSBsaXN0IGlzCisgICAgLy8gZGlyZWN0Oi8vICh0aGUgdXN1YWwgY2FzZSksIHRoZW4gdGhlIHVz
ZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRoaXMgaXMgc2ltaWxhciB0bworICAgIC8v
IHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxkIGJlIG1hbnkgcG9zc2liaWxpdGllcyBy
ZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBhbmQKKyAgICAvLyBpZiB3ZSdyZSB0cnlp
bmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBlYWNoIG9uZSBpbiBvcmRlciwgYnV0IGhl
cmUgd2UgYXJlIG5vdCB0cnlpbmcKKyAgICAvLyB0byBjb25uZWN0LCBtZXJlbHkgdG8gZGVjaWRl
IHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2VkLgorICAgIHJldHVybiB1cmlzICYmICp1
cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIpOworfQorCitzdGF0aWMgdm9pZCBkaWRS
ZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29sdmVyLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCogaXNVc2luZ1Byb3h5KQoreworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdf
cHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNvbHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0
UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBk
ZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKmlzVXNpbmdQcm94eVR5cGUgPSBkaWRSZXNv
bHZlUHJveHkodXJpcy5nZXQoKSk7CisgICAgKmlzVXNpbmdQcm94eSA9IGlzVXNpbmdIdHRwUHJv
eHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRG
b3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
dm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIo
c291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVz
ZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxi
YWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRh
KQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3Vs
dCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAg
IEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOworICAgIGdfb2JqZWN0X2dldChOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29s
dmVyLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBBU1NFUlQocmVzb2x2ZXIpOworCisgICAgZ19w
cm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNV
c2luZ1Byb3h5KTsKKyAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5n
ZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0
dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29s
dmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2
ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKK30KKworc3RhdGlj
IHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjayhTb3VwQWRkcmVzcyogYWRkcmVzcywg
Z3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFU
VVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChkYXRhKTsKKyAgICBhdXRvKiBv
YnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVPYnNlcnZlcio+KGRhdGEpOworCisgICAg
VmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYgKCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2
ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBsZW47CisgICAgYXV0byog
aXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihz
b3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3MsICZsZW4pKTsKKyAgICBhZGRyZXNzZXMu
dW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcGFkZHJlc3MpKTsKKworICAgIG9i
c2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwg
bnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2
ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBh
dXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxh
YmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLmdldCgp
LCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVy
LT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBt
X29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgpKSkKKyAgICAgICAgZ19jYW5jZWxsYWJs
ZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdkMWZlZjA3ZjE3YjExNWNjOGFjZWI0YzA2ZDUwMDViOWNk
ZDU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5T
UmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNv
bHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5T
UmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3ZGRkMjIzM2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYz
OTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUg
IkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKFNPVVApCi0KLSNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHBy
ZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0
aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsKLXN0YXRpYyBib29sIGlzVXNpbmdIdHRw
c1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlz
KQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZv
ciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcwotICAgIC8vIGRpcmVj
dDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBh
IHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KLSAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0
aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJl
ZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxk
IGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0g
ICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3Vs
ZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJk
aXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29s
dmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5
cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9m
aW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5
IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwot
ICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5
OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmpl
Y3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAg
IGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNp
bmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMg
dm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJv
eHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwg
c3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJl
c29sdmVyOwotICAgIGdfb2JqZWN0X2dldChOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Np
b24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKLSAg
ICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMo
cmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNv
bHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20v
IiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQ
cm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBn
dWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVz
b2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24o
KS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZl
ZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYyYTE0MDdjMGYwYmNjZjIzNzIxMi4uMzg3
NDIwZTAzZDk0MWExNDk2NWUxYWU4YTExMzIyMWJkYmFkODkwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCkBAIC00Miw2ICs0MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYTsKKyNlbHNlCit1c2luZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9
IE5ldHdvcmtSVENSZXNvbHZlcjsKKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVl
X3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkKIHsKICAgICBhdXRvIHRocmVhZCA9IHJ0
Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCk7CkBAIC0xNjQsMTMgKzE3MCwyMSBA
QCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3Jl
YXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQog
ewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZl
cj4oW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJv
ciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0+KGlkZW50aWZpZXIsIFt0aGlzLCBpZGVudGlm
aWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgaWYg
KHJlc3VsdC5lcnJvcigpICE9IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkK
ICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJl
c3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byYgcGxhdGZvcm1B
ZGRyZXNzZXMgPSByZXN1bHQudmFsdWUoKS5nZXQoKTsKKyAgICAgICAgc2l6ZV90IGNvdW50ID0g
cGxhdGZvcm1BZGRyZXNzZXMuc2l6ZSgpOworICAgICAgICBWZWN0b3I8V2ViS2l0OjpSVENOZXR3
b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICAgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgIGZvciAoYXV0byBhZGRyZXNzIDogcGxhdGZv
cm1BZGRyZXNzZXMpCisgICAgICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05l
dHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLmdldCgpLT5zaW5fYWRkcikp
KTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3NlcyksIGlkZW50aWZpZXIp
OwogICAgIH0pOwogICAgIHJlc29sdmVyLT5zdGFydChhZGRyZXNzKTsKICAgICBtX3Jlc29sdmVy
cy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShyZXNvbHZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAK
aW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3MzExZjllNWNiMTZjM2ZmMDE2ZS4uYTEzYjlmOTY5
NzNmODdhNGFjZjJjMzQxMzc1MzczM2U3NWQ4ZjM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCkBA
IC0zMiw2OCArMzIsMzIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkIHJl
c29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNv
bnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQotewotICAgIEFTU0VSVF9VTlVT
RUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewotICAg
ICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHBy
b3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENS
ZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJlZiBy
ZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJl
ZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBz
aXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAgIFZl
Y3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZE
YXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsK
LSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNv
Y2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nlcy51
bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJl
c3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nl
cyk7Ci19Ci0KLU5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgOiBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3Jr
UlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9j
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKIH0KIAogTmV0
d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKCkKIHsKLSAgICBDRkhvc3RVbnNj
aGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0cik7CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChFcnJvcjo6VW5rbm93bikpOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZl
cjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6
OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYgYWRkcmVzc2VzKQog
ewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgQ0ZIb3N0Q2xp
ZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
IH07Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29u
dGV4dCk7Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVu
TG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBCb29sZWFuIHJl
c3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRk
cmVzc2VzLCBudWxscHRyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAg
ICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxl
cikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOwogfQogCi12b2lk
IE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rh
cnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0
aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOwotICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVy
KSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNl
bGxlZCkpOworICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgdGhpcyk7CiB9CiAKLXZv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6
OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkK
IHsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOworICAg
IFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5N2NkYThjNzIzYmRl
MzVlNzI3OC4uODI0YThmYmZmZmNkZjQ4NjcwN2RhNTM0MjkxNjI4NTgxYTg0NjllNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyLmgKQEAgLTI4LDMwICsyOCwzMSBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNp
bmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2lu
Y2x1ZGUgIldlYkNvcmUvRE5TLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIDog
cHVibGljIFdlYkNvcmU6OkROU1Jlc29sdmVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgZW51bSBj
bGFzcyBFcnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9OwogCi0gICAgdXNpbmcgQWRkcmVzc2Vz
T3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFJU
Q05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47CisgICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJv
ciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFdlYkNvcmU6
OklQQWRkcmVzcz4+LCBFcnJvcj47CiAgICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47CiAKLSAgICBleHBs
aWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdv
cmtSVENSZXNvbHZlcigpOworICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRf
dCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3Jr
UlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsK
LSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9pZCBjb21wbGV0ZWQo
Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKKyAgICB2b2lkIGNvbXBsZXRl
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYpIGZpbmFsOworICAgIHVpbnQ2NF90
IGdldElkKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9OwogCi1wcml2YXRlOgorcHJv
dGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBDb21wbGV0aW9uSGFuZGxl
ciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBlNmIzZWIxZWY3Y2JkNzg4YzQxYjYzMmUyNzU0MTk5OWYxYzMzNmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0
UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3Is
IHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsK
KworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhh
bmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGluZm8pOworICAgIGF1dG8qIHJl
c29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EqPihpbmZvKTsKKwor
ICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAo
Q0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBB
ZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
Y291bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2lu
ZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFs
dWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJl
c3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdl
dEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNv
cmU6OklQQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29sdmVyLT5jb21wbGV0ZWQo
YWRkcmVzc2VzKTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNv
bHZlckNvY29hKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBO
ZXR3b3JrUlRDUmVzb2x2ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05l
dHdvcmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAg
IENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1
cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9o
b3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFk
b3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5j
cmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0
ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0
Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0
U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwg
a0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0
SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24o
bV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVk
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJU
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNWZkYjY2ODcyMWU1OGE5
Y2JkNThlMDg5NTg2OTExNGQ1OGE4MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMp
CisKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgPENGTmV0d29y
ay9DRkhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtSVENSZXNv
bHZlckNvY29hIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
fk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0
IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21h
a2UKaW5kZXggNTM2MWFjY2Y4MjM2OTFjMzU3ZDhlMTMzMWZkNDE1OTJjMzlkODE2NC4uNWI2MGMz
ZGRlNmZjMWFhMjExYzU3NDc0NGMyODU4MGIwYmVkZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNt
YWtlCkBAIC00OCw2ICs0OCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nl
c3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKKyAgICBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorCiAgICAgUGxhdGZvcm0vSVBDL2ds
aWIvR1NvY2tldE1vbml0b3IuY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVu
aXguY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MzlmZDZh
N2U5OTAyZTY0MzU3MjkwNjg5YTFkM2RlMDJlNGI0MWIxLi42MGFkMWRmZDY2YjJkMWM5ODk3ZTQ3
ODI4ZDRiNzk3Mjg4MjM0ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMCw2ICs5MTAsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRD
MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5j
cHAgKi87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQy
RkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBF
Njc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldl
YlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07
CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRG
QjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4
NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBO
ZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjY5LDYgKzMyNzAsOCBAQAogCQk0MTA0
ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdv
cmtSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FC
MDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5l
dHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
QjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93
ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENT
b2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tl
dC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDQsNiArNjIwNyw4IEBACiAJCQkJNDFEQzQ1
OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywK
IAkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAq
LywKIAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmgg
Ki8sCisJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcCAqLywKKwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29y
a1JUQ1NvY2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdv
cmtSVENTb2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29y
a1JUQ1NvY2tldC5tZXNzYWdlcy5pbiAqLywKQEAgLTEwNTM2LDYgKzEwNTQxLDcgQEAKIAkJCQk0
MURDNDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlk
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3
QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENT
b2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8q
IE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM4MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBp
biBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333591</attachid>
            <date>2018-02-12 05:47:53 -0800</date>
            <delta_ts>2018-02-12 05:55:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180212144751.patch</filename>
            <type>text/plain</type>
            <size>74966</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLmI2NzgwYzVkZTEyZDE5ODc0MDI0Yjk1OGQ3N2Y4MDNhZjE0MTA2NjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM2IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVBBZGRy
ZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJUEFkZHJlc3MoY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAgICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7
CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBnZXQoKSB7IHJldHVybiAm
bV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJl
c3M7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBETlNSZXNvbHZlT2JzZXJ2ZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkROU1Jlc29sdmVPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxJUEFkZHJlc3M+JikgeyB9OworICAg
IHZpcnR1YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7Cit9OworCiBXRUJDT1JFX0VYUE9SVCB2b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwotfQorV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUmVzb2x2ZUROUyhETlNSZXNvbHZlT2JzZXJ2
ZXIqKTsKIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThjMmRmNDBjM2JmYmFjNWY1YzM5MjliY2Ez
MzkzMDBmMGEwMjYxOC4uNTE1ZWY2NWQzYzRhMTEwNzg2MmUxNWFjMWVkMTU2Y2VmZmIyNjAxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwu
aCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQ
KQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVTb3VwOwor
I2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZl
UXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZv
cm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlmCisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1
ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5
ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBieSBob3Zl
cmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlk
ZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIu
CiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUy
LDE1ICs2OCwxNSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyByZXNvbHZpbmdSZXRyeURlbGF5IHsg
MTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+IHF1ZXVlOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7
CiAKICAgICByZXR1cm4gcXVldWU7CiB9CiAKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1
ZXVlKCkKLSAgICA6IG1fdGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQp
CisgICAgOiBtX2lzVXNpbmdQcm94eSh0cnVlKQorICAgICwgbV90aW1lcigqdGhpcywgJkROU1Jl
c29sdmVRdWV1ZTo6dGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdHNJbkZsaWdodCgwKQotICAg
ICwgbV9pc1VzaW5nUHJveHkodHJ1ZSkKICAgICAsIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0No
ZWNrVGltZSgwKQogewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5pdGlh
bCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNj
NDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uNDkwZDcyNTE3Nzg3ZjJkZThmYzU5YTBhZTg5
ODY5N2UzMDAyMGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEROU1Jlc29sdmVR
dWV1ZV9oCiAjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9oCiAKKyNpbmNsdWRlICJETlMuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgpAQCAtMzksMjkgKzQwLDMzIEBAIGNsYXNzIEROU1Jlc29sdmVRdWV1ZSB7CiAgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT47CiAKIHB1YmxpYzoKKyAgICBETlNS
ZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNSZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7
CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaW5nbGV0b24oKTsKIAorICAgIHZpcnR1
YWwgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVy
KikgPSAwOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQg
ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CiAgICAgICAgIC0tbV9yZXF1ZXN0c0luRmxp
Z2h0OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQorcHJvdGVj
dGVkOgogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAKLSAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQ
cm94eSgpOwotICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpOworICAgIGJv
b2wgbV9pc1VzaW5nUHJveHk7CiAKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlz
VXNpbmdQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIAogICAgIFRpbWVyIG1fdGlt
ZXI7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1lczsKICAgICBzdGQ6OmF0b21pYzxpbnQ+
IG1fcmVxdWVzdHNJbkZsaWdodDsKLSAgICBib29sIG1faXNVc2luZ1Byb3h5OwogICAgIGRvdWJs
ZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxj
b2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
PENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2lu
Y2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsu
aD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdz
KCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBtX2lzVXNpbmdQcm94eSA9
IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIp
LmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJMID0gVVJM
KFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsK
LQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZO
ZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdl
dCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0
Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0
aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3VudCA9IENGQXJyYXlHZXRD
b3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBodHRwc1Byb3h5Q291bnQg
PSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsKLSAgICBpZiAoaHR0cFBy
b3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwUHJveHlBcnJheS5n
ZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAg
aHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291bnQgPT0gMSAmJiBDRkVx
dWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlU
eXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBzUHJveHlDb3VudCA9IDA7
Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3Vu
dDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENG
SG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCi17Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBv
ayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGlj
IHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgotICAgIENGUmVs
ZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgaWYgKCFo
b3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCi0gICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSNpZiAhUExBVEZP
Uk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5M
b29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vsc2UKLSAgICAvLyBPbiBX
aW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlz
IHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhv
c3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTdmOGJkMTFmOWFmODhhNjlmY2JjZjc3YmZhODk3NGQ0ZTA0NzNkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0Yu
aCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShJT1MpCisjaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5l
dHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAoIXByb3h5U2V0dGluZ3Mp
IHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4
YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
aHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBD
RlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJM
KGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKworICAgIENGSW5kZXgg
aHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwor
ICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlB
cnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwg
a0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKKyAgICBpZiAo
aHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0
aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94
eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQor
ICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1VzaW5nUHJveHkgPSBodHRw
UHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRpYyB2b2lkIGNsaWVudENh
bGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1F
cnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVt
ZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEg
c2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGlu
aXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0
UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7CisgICAgICAgIGRlY3JlbWVu
dFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ0ZIb3N0Q2xp
ZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07CisgICAgQ0ZIb3N0UmVmIGxl
YWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBm
cm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGll
bnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQorICAgIENGSG9zdFNjaGVk
dWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0
ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdp
bGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwg
bG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworI2VuZGlmCisgICAgQ0ZI
b3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsK
K30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIC8q
IGhvc3RuYW1lICovICwgRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDBjNDk5
MjRhZGM5OGFmODYzMDlkMGJkZTc0OGMxNDQyMzlmNzQzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGTmV0IDogcHVibGljIEROU1Jlc29s
dmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTMxZjU5ODRjMGNl
OGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5o
IgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJv
eHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgLyog
aG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNv
bHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTU1NWRlNDUwYWYwN2MxZTJiNjNm
NGFkOTVlNWQyNmE5MTIzYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1
cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlz
VXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAq
LykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1
cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNl
cnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8q
IG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVz
b2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0RO
U1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTNmNjIzZTA0YzgyYzhiNmNjNTQ3ZmRm
ZWIzZTBmNzI2NjQ1MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6
CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAg
dm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1
ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVz
b2x2ZVF1ZXVlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFjOWMwNTM2YTU2MGU2Y2UzZDIyMGFhMTVi
OWZkMzZkNTY5OWZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApAQCAtMCwwICsxLDE0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisKKyNpZiBVU0UoU09V
UCkKKworI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNvdXBO
ZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBJbml0
aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3RheXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2
ZSBwcm94eSBzZXR0aW5ncy4KK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwUHJveHkgPSB0cnVlOwor
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0cnVlOworCitzdGF0aWMgYm9vbCBkaWRS
ZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCit7CisgICAgLy8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9z
c2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkkuIElmIHRoZSBmaXJzdCBpdGVtIGluIHRo
ZSBsaXN0IGlzCisgICAgLy8gZGlyZWN0Oi8vICh0aGUgdXN1YWwgY2FzZSksIHRoZW4gdGhlIHVz
ZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRoaXMgaXMgc2ltaWxhciB0bworICAgIC8v
IHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxkIGJlIG1hbnkgcG9zc2liaWxpdGllcyBy
ZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBhbmQKKyAgICAvLyBpZiB3ZSdyZSB0cnlp
bmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBlYWNoIG9uZSBpbiBvcmRlciwgYnV0IGhl
cmUgd2UgYXJlIG5vdCB0cnlpbmcKKyAgICAvLyB0byBjb25uZWN0LCBtZXJlbHkgdG8gZGVjaWRl
IHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2VkLgorICAgIHJldHVybiB1cmlzICYmICp1
cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIpOworfQorCitzdGF0aWMgdm9pZCBkaWRS
ZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29sdmVyLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCogaXNVc2luZ1Byb3h5KQoreworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdf
cHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNvbHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0
UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBk
ZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKmlzVXNpbmdQcm94eVR5cGUgPSBkaWRSZXNv
bHZlUHJveHkodXJpcy5nZXQoKSk7CisgICAgKmlzVXNpbmdQcm94eSA9IGlzVXNpbmdIdHRwUHJv
eHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRG
b3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
dm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIo
c291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVz
ZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxi
YWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRh
KQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3Vs
dCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAg
IEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOworICAgIGdfb2JqZWN0X2dldChOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29s
dmVyLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBBU1NFUlQocmVzb2x2ZXIpOworCisgICAgZ19w
cm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNV
c2luZ1Byb3h5KTsKKyAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5n
ZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0
dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29s
dmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2
ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKK30KKworc3RhdGlj
IHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjayhTb3VwQWRkcmVzcyogYWRkcmVzcywg
Z3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFU
VVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChkYXRhKTsKKyAgICBhdXRvKiBv
YnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVPYnNlcnZlcio+KGRhdGEpOworCisgICAg
VmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYgKCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2
ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBsZW47CisgICAgYXV0byog
aXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihz
b3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3MsICZsZW4pKTsKKyAgICBhZGRyZXNzZXMu
dW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcGFkZHJlc3MpKTsKKworICAgIG9i
c2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwg
bnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2
ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBh
dXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxh
YmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLmdldCgp
LCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVy
LT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBt
X29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgpKSkKKyAgICAgICAgZ19jYW5jZWxsYWJs
ZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdkMWZlZjA3ZjE3YjExNWNjOGFjZWI0YzA2ZDUwMDViOWNk
ZDU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5T
UmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNv
bHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5T
UmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3ZGRkMjIzM2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYz
OTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUg
IkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKFNPVVApCi0KLSNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHBy
ZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0
aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsKLXN0YXRpYyBib29sIGlzVXNpbmdIdHRw
c1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlz
KQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZv
ciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcwotICAgIC8vIGRpcmVj
dDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBh
IHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KLSAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0
aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJl
ZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxk
IGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0g
ICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3Vs
ZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJk
aXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29s
dmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5
cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9m
aW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5
IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwot
ICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5
OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmpl
Y3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAg
IGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNp
bmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMg
dm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJv
eHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwg
c3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJl
c29sdmVyOwotICAgIGdfb2JqZWN0X2dldChOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Np
b24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKLSAg
ICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMo
cmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNv
bHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20v
IiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQ
cm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBn
dWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVz
b2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24o
KS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZl
ZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYyYTE0MDdjMGYwYmNjZjIzNzIxMi4uMzg3
NDIwZTAzZDk0MWExNDk2NWUxYWU4YTExMzIyMWJkYmFkODkwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCkBAIC00Miw2ICs0MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYTsKKyNlbHNlCit1c2luZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9
IE5ldHdvcmtSVENSZXNvbHZlcjsKKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVl
X3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkKIHsKICAgICBhdXRvIHRocmVhZCA9IHJ0
Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCk7CkBAIC0xNjQsMTMgKzE3MCwyMSBA
QCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3Jl
YXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQog
ewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZl
cj4oW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJv
ciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0+KGlkZW50aWZpZXIsIFt0aGlzLCBpZGVudGlm
aWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgaWYg
KHJlc3VsdC5lcnJvcigpICE9IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkK
ICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJl
c3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byYgcGxhdGZvcm1B
ZGRyZXNzZXMgPSByZXN1bHQudmFsdWUoKS5nZXQoKTsKKyAgICAgICAgc2l6ZV90IGNvdW50ID0g
cGxhdGZvcm1BZGRyZXNzZXMuc2l6ZSgpOworICAgICAgICBWZWN0b3I8V2ViS2l0OjpSVENOZXR3
b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICAgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgIGZvciAoYXV0byBhZGRyZXNzIDogcGxhdGZv
cm1BZGRyZXNzZXMpCisgICAgICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05l
dHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLmdldCgpLT5zaW5fYWRkcikp
KTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3NlcyksIGlkZW50aWZpZXIp
OwogICAgIH0pOwogICAgIHJlc29sdmVyLT5zdGFydChhZGRyZXNzKTsKICAgICBtX3Jlc29sdmVy
cy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShyZXNvbHZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAK
aW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3MzExZjllNWNiMTZjM2ZmMDE2ZS4uYTEzYjlmOTY5
NzNmODdhNGFjZjJjMzQxMzc1MzczM2U3NWQ4ZjM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCkBA
IC0zMiw2OCArMzIsMzIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkIHJl
c29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNv
bnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQotewotICAgIEFTU0VSVF9VTlVT
RUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewotICAg
ICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHBy
b3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENS
ZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJlZiBy
ZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJl
ZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBz
aXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAgIFZl
Y3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZE
YXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsK
LSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNv
Y2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nlcy51
bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJl
c3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nl
cyk7Ci19Ci0KLU5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgOiBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3Jr
UlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9j
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKIH0KIAogTmV0
d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKCkKIHsKLSAgICBDRkhvc3RVbnNj
aGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0cik7CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChFcnJvcjo6VW5rbm93bikpOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZl
cjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6
OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYgYWRkcmVzc2VzKQog
ewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgQ0ZIb3N0Q2xp
ZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
IH07Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29u
dGV4dCk7Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVu
TG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBCb29sZWFuIHJl
c3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRk
cmVzc2VzLCBudWxscHRyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAg
ICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxl
cikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOwogfQogCi12b2lk
IE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rh
cnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0
aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOwotICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVy
KSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNl
bGxlZCkpOworICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgdGhpcyk7CiB9CiAKLXZv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6
OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkK
IHsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOworICAg
IFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5N2NkYThjNzIzYmRl
MzVlNzI3OC4uODI0YThmYmZmZmNkZjQ4NjcwN2RhNTM0MjkxNjI4NTgxYTg0NjllNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyLmgKQEAgLTI4LDMwICsyOCwzMSBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNp
bmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2lu
Y2x1ZGUgIldlYkNvcmUvRE5TLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIDog
cHVibGljIFdlYkNvcmU6OkROU1Jlc29sdmVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgZW51bSBj
bGFzcyBFcnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9OwogCi0gICAgdXNpbmcgQWRkcmVzc2Vz
T3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFJU
Q05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47CisgICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJv
ciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFdlYkNvcmU6
OklQQWRkcmVzcz4+LCBFcnJvcj47CiAgICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47CiAKLSAgICBleHBs
aWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdv
cmtSVENSZXNvbHZlcigpOworICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRf
dCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3Jr
UlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsK
LSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9pZCBjb21wbGV0ZWQo
Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKKyAgICB2b2lkIGNvbXBsZXRl
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYpIGZpbmFsOworICAgIHVpbnQ2NF90
IGdldElkKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9OwogCi1wcml2YXRlOgorcHJv
dGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBDb21wbGV0aW9uSGFuZGxl
ciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhiOGE2NWU5YjYwMzU4YmQ0YTYxNTNkYjY0MjMyY2M4YmJmZjkwZDUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0
UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3Is
IHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsK
KworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhh
bmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGluZm8pOworICAgIGF1dG8qIHJl
c29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EqPihpbmZvKTsKKwor
ICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAo
Q0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRy
ZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291
bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4
KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVB
dEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5
dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6
OklQQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRk
cmVzc2VzKTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNvbHZl
ckNvY29hKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3
b3JrUlRDUmVzb2x2ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdv
cmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENG
SG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJl
bnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0
LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0
Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVh
dGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0g
eyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xp
ZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2No
ZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NG
UnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5m
b1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9o
b3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNWZkYjY2ODcyMWU1OGE5Y2Jk
NThlMDg5NTg2OTExNGQ1OGE4MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisK
KyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgPENGTmV0d29yay9D
Rkhvc3QuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5l
dHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0
cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKK3ByaXZhdGU6
CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggNTM2MWFjY2Y4MjM2OTFjMzU3ZDhlMTMzMWZkNDE1OTJjMzlkODE2NC4uNWI2MGMzZGRl
NmZjMWFhMjExYzU3NDc0NGMyODU4MGIwYmVkZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC00OCw2ICs0OCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mv
c291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorCiAgICAgUGxhdGZvcm0vSVBDL2dsaWIv
R1NvY2tldE1vbml0b3IuY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXgu
Y3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MzlmZDZhN2U5
OTAyZTY0MzU3MjkwNjg5YTFkM2RlMDJlNGI0MWIxLi42MGFkMWRmZDY2YjJkMWM5ODk3ZTQ3ODI4
ZDRiNzk3Mjg4MjM0ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTkxMCw2ICs5MTAsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBG
MDA2RDAgLyogUlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAg
Ki87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJU
Q05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJ
CTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAw
MDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYz
MDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3
b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjY5LDYgKzMyNzAsOCBAQAogCQk0MTA0ODJD
QzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29y
a1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtS
VENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBF
Njc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdv
cmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIy
NjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMw
NzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2Nr
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5o
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDQsNiArNjIwNyw4IEBACiAJCQkJNDFEQzQ1OTgx
RTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJ
CQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywK
IAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8s
CisJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29h
LmNwcCAqLywKKwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtS
VENTb2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5tZXNzYWdlcy5pbiAqLywKQEAgLTEwNTM2LDYgKzEwNTQxLDcgQEAKIAkJCQk0MURD
NDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAw
RTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEy
QjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2Nr
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5l
dHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4
MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBT
b3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333592</attachid>
            <date>2018-02-12 05:55:52 -0800</date>
            <delta_ts>2018-02-12 06:06:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180212145550.patch</filename>
            <type>text/plain</type>
            <size>75020</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLmI2NzgwYzVkZTEyZDE5ODc0MDI0Yjk1OGQ3N2Y4MDNhZjE0MTA2NjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM2IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVBBZGRy
ZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJUEFkZHJlc3MoY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAgICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7
CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBnZXQoKSB7IHJldHVybiAm
bV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJl
c3M7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBETlNSZXNvbHZlT2JzZXJ2ZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkROU1Jlc29sdmVPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxJUEFkZHJlc3M+JikgeyB9OworICAg
IHZpcnR1YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7Cit9OworCiBXRUJDT1JFX0VYUE9SVCB2b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwotfQorV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUmVzb2x2ZUROUyhETlNSZXNvbHZlT2JzZXJ2
ZXIqKTsKIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThjMmRmNDBjM2JmYmFjNWY1YzM5MjliY2Ez
MzkzMDBmMGEwMjYxOC4uNTE1ZWY2NWQzYzRhMTEwNzg2MmUxNWFjMWVkMTU2Y2VmZmIyNjAxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwu
aCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQ
KQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVTb3VwOwor
I2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZl
UXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZv
cm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlmCisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1
ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5
ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBieSBob3Zl
cmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlk
ZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIu
CiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUy
LDE1ICs2OCwxNSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyByZXNvbHZpbmdSZXRyeURlbGF5IHsg
MTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+IHF1ZXVlOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7
CiAKICAgICByZXR1cm4gcXVldWU7CiB9CiAKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1
ZXVlKCkKLSAgICA6IG1fdGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQp
CisgICAgOiBtX2lzVXNpbmdQcm94eSh0cnVlKQorICAgICwgbV90aW1lcigqdGhpcywgJkROU1Jl
c29sdmVRdWV1ZTo6dGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdHNJbkZsaWdodCgwKQotICAg
ICwgbV9pc1VzaW5nUHJveHkodHJ1ZSkKICAgICAsIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0No
ZWNrVGltZSgwKQogewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5pdGlh
bCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNj
NDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uNDkwZDcyNTE3Nzg3ZjJkZThmYzU5YTBhZTg5
ODY5N2UzMDAyMGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEROU1Jlc29sdmVR
dWV1ZV9oCiAjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9oCiAKKyNpbmNsdWRlICJETlMuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgpAQCAtMzksMjkgKzQwLDMzIEBAIGNsYXNzIEROU1Jlc29sdmVRdWV1ZSB7CiAgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT47CiAKIHB1YmxpYzoKKyAgICBETlNS
ZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNSZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7
CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaW5nbGV0b24oKTsKIAorICAgIHZpcnR1
YWwgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVy
KikgPSAwOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQg
ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CiAgICAgICAgIC0tbV9yZXF1ZXN0c0luRmxp
Z2h0OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQorcHJvdGVj
dGVkOgogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAKLSAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQ
cm94eSgpOwotICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpOworICAgIGJv
b2wgbV9pc1VzaW5nUHJveHk7CiAKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlz
VXNpbmdQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIAogICAgIFRpbWVyIG1fdGlt
ZXI7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1lczsKICAgICBzdGQ6OmF0b21pYzxpbnQ+
IG1fcmVxdWVzdHNJbkZsaWdodDsKLSAgICBib29sIG1faXNVc2luZ1Byb3h5OwogICAgIGRvdWJs
ZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxj
b2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
PENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2lu
Y2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsu
aD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdz
KCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBtX2lzVXNpbmdQcm94eSA9
IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIp
LmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJMID0gVVJM
KFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsK
LQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZO
ZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdl
dCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0
Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0
aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3VudCA9IENGQXJyYXlHZXRD
b3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBodHRwc1Byb3h5Q291bnQg
PSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsKLSAgICBpZiAoaHR0cFBy
b3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwUHJveHlBcnJheS5n
ZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAg
aHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291bnQgPT0gMSAmJiBDRkVx
dWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlU
eXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBzUHJveHlDb3VudCA9IDA7
Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3Vu
dDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENG
SG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCi17Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBv
ayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGlj
IHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgotICAgIENGUmVs
ZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgaWYgKCFo
b3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCi0gICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSNpZiAhUExBVEZP
Uk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5M
b29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vsc2UKLSAgICAvLyBPbiBX
aW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlz
IHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhv
c3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTdmOGJkMTFmOWFmODhhNjlmY2JjZjc3YmZhODk3NGQ0ZTA0NzNkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0Yu
aCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShJT1MpCisjaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5l
dHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAoIXByb3h5U2V0dGluZ3Mp
IHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4
YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
aHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBD
RlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJM
KGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKworICAgIENGSW5kZXgg
aHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwor
ICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlB
cnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwg
a0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKKyAgICBpZiAo
aHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0
aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94
eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQor
ICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1VzaW5nUHJveHkgPSBodHRw
UHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRpYyB2b2lkIGNsaWVudENh
bGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1F
cnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVt
ZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEg
c2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGlu
aXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0
UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7CisgICAgICAgIGRlY3JlbWVu
dFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ0ZIb3N0Q2xp
ZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07CisgICAgQ0ZIb3N0UmVmIGxl
YWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBm
cm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGll
bnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQorICAgIENGSG9zdFNjaGVk
dWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0
ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdp
bGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwg
bG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworI2VuZGlmCisgICAgQ0ZI
b3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsK
K30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIC8q
IGhvc3RuYW1lICovICwgRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDBjNDk5
MjRhZGM5OGFmODYzMDlkMGJkZTc0OGMxNDQyMzlmNzQzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGTmV0IDogcHVibGljIEROU1Jlc29s
dmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTMxZjU5ODRjMGNl
OGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5o
IgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJv
eHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgLyog
aG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNv
bHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTU1NWRlNDUwYWYwN2MxZTJiNjNm
NGFkOTVlNWQyNmE5MTIzYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1
cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlz
VXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAq
LykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1
cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNl
cnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8q
IG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVz
b2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0RO
U1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTNmNjIzZTA0YzgyYzhiNmNjNTQ3ZmRm
ZWIzZTBmNzI2NjQ1MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6
CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAg
dm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1
ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVz
b2x2ZVF1ZXVlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFjOWMwNTM2YTU2MGU2Y2UzZDIyMGFhMTVi
OWZkMzZkNTY5OWZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApAQCAtMCwwICsxLDE0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisKKyNpZiBVU0UoU09V
UCkKKworI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNvdXBO
ZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBJbml0
aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3RheXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2
ZSBwcm94eSBzZXR0aW5ncy4KK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwUHJveHkgPSB0cnVlOwor
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0cnVlOworCitzdGF0aWMgYm9vbCBkaWRS
ZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCit7CisgICAgLy8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9z
c2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkkuIElmIHRoZSBmaXJzdCBpdGVtIGluIHRo
ZSBsaXN0IGlzCisgICAgLy8gZGlyZWN0Oi8vICh0aGUgdXN1YWwgY2FzZSksIHRoZW4gdGhlIHVz
ZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRoaXMgaXMgc2ltaWxhciB0bworICAgIC8v
IHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxkIGJlIG1hbnkgcG9zc2liaWxpdGllcyBy
ZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBhbmQKKyAgICAvLyBpZiB3ZSdyZSB0cnlp
bmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBlYWNoIG9uZSBpbiBvcmRlciwgYnV0IGhl
cmUgd2UgYXJlIG5vdCB0cnlpbmcKKyAgICAvLyB0byBjb25uZWN0LCBtZXJlbHkgdG8gZGVjaWRl
IHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2VkLgorICAgIHJldHVybiB1cmlzICYmICp1
cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIpOworfQorCitzdGF0aWMgdm9pZCBkaWRS
ZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29sdmVyLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCogaXNVc2luZ1Byb3h5KQoreworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdf
cHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNvbHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0
UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBk
ZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKmlzVXNpbmdQcm94eVR5cGUgPSBkaWRSZXNv
bHZlUHJveHkodXJpcy5nZXQoKSk7CisgICAgKmlzVXNpbmdQcm94eSA9IGlzVXNpbmdIdHRwUHJv
eHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRG
b3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
dm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIo
c291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVz
ZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxi
YWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRh
KQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3Vs
dCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAg
IEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOworICAgIGdfb2JqZWN0X2dldChOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29s
dmVyLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBBU1NFUlQocmVzb2x2ZXIpOworCisgICAgZ19w
cm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNV
c2luZ1Byb3h5KTsKKyAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5n
ZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0
dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29s
dmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2
ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKK30KKworc3RhdGlj
IHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjayhTb3VwQWRkcmVzcyogYWRkcmVzcywg
Z3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFU
VVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChkYXRhKTsKKyAgICBhdXRvKiBv
YnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVPYnNlcnZlcio+KGRhdGEpOworCisgICAg
VmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYgKCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2
ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBsZW47CisgICAgYXV0byog
aXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihz
b3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3MsICZsZW4pKTsKKyAgICBhZGRyZXNzZXMu
dW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcGFkZHJlc3MpKTsKKworICAgIG9i
c2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwg
bnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2
ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBh
dXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxh
YmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLmdldCgp
LCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVy
LT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBt
X29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgpKSkKKyAgICAgICAgZ19jYW5jZWxsYWJs
ZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdkMWZlZjA3ZjE3YjExNWNjOGFjZWI0YzA2ZDUwMDViOWNk
ZDU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5T
UmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNv
bHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5T
UmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3ZGRkMjIzM2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYz
OTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUg
IkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKFNPVVApCi0KLSNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHBy
ZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0
aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsKLXN0YXRpYyBib29sIGlzVXNpbmdIdHRw
c1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlz
KQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZv
ciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcwotICAgIC8vIGRpcmVj
dDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBh
IHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KLSAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0
aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJl
ZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxk
IGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0g
ICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3Vs
ZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJk
aXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29s
dmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5
cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9m
aW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5
IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwot
ICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5
OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmpl
Y3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAg
IGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNp
bmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMg
dm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJv
eHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwg
c3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJl
c29sdmVyOwotICAgIGdfb2JqZWN0X2dldChOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Np
b24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKLSAg
ICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMo
cmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNv
bHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20v
IiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQ
cm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBn
dWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVz
b2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24o
KS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZl
ZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYyYTE0MDdjMGYwYmNjZjIzNzIxMi4uMzg3
NDIwZTAzZDk0MWExNDk2NWUxYWU4YTExMzIyMWJkYmFkODkwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCkBAIC00Miw2ICs0MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYTsKKyNlbHNlCit1c2luZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9
IE5ldHdvcmtSVENSZXNvbHZlcjsKKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVl
X3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkKIHsKICAgICBhdXRvIHRocmVhZCA9IHJ0
Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCk7CkBAIC0xNjQsMTMgKzE3MCwyMSBA
QCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3Jl
YXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQog
ewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZl
cj4oW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJv
ciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0+KGlkZW50aWZpZXIsIFt0aGlzLCBpZGVudGlm
aWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFi
bGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAgICAgICAgICAgaWYg
KHJlc3VsdC5lcnJvcigpICE9IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkK
ICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJl
c3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byYgcGxhdGZvcm1B
ZGRyZXNzZXMgPSByZXN1bHQudmFsdWUoKS5nZXQoKTsKKyAgICAgICAgc2l6ZV90IGNvdW50ID0g
cGxhdGZvcm1BZGRyZXNzZXMuc2l6ZSgpOworICAgICAgICBWZWN0b3I8V2ViS2l0OjpSVENOZXR3
b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICAgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgIGZvciAoYXV0byBhZGRyZXNzIDogcGxhdGZv
cm1BZGRyZXNzZXMpCisgICAgICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05l
dHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLmdldCgpLT5zaW5fYWRkcikp
KTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3NlcyksIGlkZW50aWZpZXIp
OwogICAgIH0pOwogICAgIHJlc29sdmVyLT5zdGFydChhZGRyZXNzKTsKICAgICBtX3Jlc29sdmVy
cy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShyZXNvbHZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAK
aW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3MzExZjllNWNiMTZjM2ZmMDE2ZS4uYTEzYjlmOTY5
NzNmODdhNGFjZjJjMzQxMzc1MzczM2U3NWQ4ZjM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCkBA
IC0zMiw2OCArMzIsMzIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkIHJl
c29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNv
bnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQotewotICAgIEFTU0VSVF9VTlVT
RUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewotICAg
ICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHBy
b3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENS
ZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJlZiBy
ZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJl
ZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBz
aXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAgIFZl
Y3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZE
YXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsK
LSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNv
Y2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nlcy51
bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJl
c3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nl
cyk7Ci19Ci0KLU5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgOiBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3Jr
UlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9j
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKIH0KIAogTmV0
d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKCkKIHsKLSAgICBDRkhvc3RVbnNj
aGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0cik7CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChFcnJvcjo6VW5rbm93bikpOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZl
cjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6
OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYgYWRkcmVzc2VzKQog
ewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgQ0ZIb3N0Q2xp
ZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
IH07Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29u
dGV4dCk7Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVu
TG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBCb29sZWFuIHJl
c3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRk
cmVzc2VzLCBudWxscHRyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAg
ICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxl
cikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOwogfQogCi12b2lk
IE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rh
cnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0
aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOwotICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVy
KSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNl
bGxlZCkpOworICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgdGhpcyk7CiB9CiAKLXZv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6
OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkK
IHsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOworICAg
IFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5N2NkYThjNzIzYmRl
MzVlNzI3OC4uODI0YThmYmZmZmNkZjQ4NjcwN2RhNTM0MjkxNjI4NTgxYTg0NjllNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyLmgKQEAgLTI4LDMwICsyOCwzMSBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNp
bmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2lu
Y2x1ZGUgIldlYkNvcmUvRE5TLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIDog
cHVibGljIFdlYkNvcmU6OkROU1Jlc29sdmVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgZW51bSBj
bGFzcyBFcnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9OwogCi0gICAgdXNpbmcgQWRkcmVzc2Vz
T3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFJU
Q05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47CisgICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJv
ciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFdlYkNvcmU6
OklQQWRkcmVzcz4+LCBFcnJvcj47CiAgICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47CiAKLSAgICBleHBs
aWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdv
cmtSVENSZXNvbHZlcigpOworICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRf
dCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3Jr
UlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsK
LSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9pZCBjb21wbGV0ZWQo
Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKKyAgICB2b2lkIGNvbXBsZXRl
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYpIGZpbmFsOworICAgIHVpbnQ2NF90
IGdldElkKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9OwogCi1wcml2YXRlOgorcHJv
dGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBDb21wbGV0aW9uSGFuZGxl
ciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdkZmQ2MzFjYzdiYjQwMTFmYzZiOTk0YmEyYTlmNGRkNDg1ZjAzMDMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0
UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3Is
IHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsK
KworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhh
bmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGluZm8pOworICAgIGF1dG8qIHJl
c29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EqPihpbmZvKTsKKwor
ICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAo
Q0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRy
ZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291
bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4
KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVB
dEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5
dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6
OklQQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRk
cmVzc2VzKTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNvbHZl
ckNvY29hKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjp+TmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9v
cChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRN
b2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRy
KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5n
JiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Cisg
ICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2
ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3Qu
Z2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAg
ICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgp
LCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RvcCgpCit7Cisg
ICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlw
ZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY5N2JiMzEwODVhNjU2NmZlM2MwZDNhYzMxYWFhMmFiMzRmMDJhMTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVz
b2x2ZXIuaCIKKworI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIDogcHVibGljIE5ldHdvcmtS
VENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdv
cmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKK3ByaXZhdGU6Cisg
ICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5k
ZXggNTM2MWFjY2Y4MjM2OTFjMzU3ZDhlMTMzMWZkNDE1OTJjMzlkODE2NC4uNWI2MGMzZGRlNmZj
MWFhMjExYzU3NDc0NGMyODU4MGIwYmVkZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC00OCw2ICs0OCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mvc291
cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKKyAgICBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorCiAgICAgUGxhdGZvcm0vSVBDL2dsaWIvR1Nv
Y2tldE1vbml0b3IuY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MzlmZDZhN2U5OTAy
ZTY0MzU3MjkwNjg5YTFkM2RlMDJlNGI0MWIxLi42MGFkMWRmZDY2YjJkMWM5ODk3ZTQ3ODI4ZDRi
Nzk3Mjg4MjM0ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTkxMCw2ICs5MTAsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2
RDAgLyogUlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87
IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBG
MDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUg
LyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05l
dHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQx
MzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3Jr
UlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjY5LDYgKzMyNzAsOCBAQAogCQk0MTA0ODJDQzFE
REQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJC
NTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JU
Q1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENS
ZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5
ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIx
RTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5
ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDQsNiArNjIwNyw4IEBACiAJCQkJNDFEQzQ1OTgxRTNE
NkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0
MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJ
CQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJ
CQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCAqLywKKwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuaCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1Nv
Y2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENT
b2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1Nv
Y2tldC5tZXNzYWdlcy5pbiAqLywKQEAgLTEwNTM2LDYgKzEwNTQxLDcgQEAKIAkJCQk0MURDNDU5
NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3
ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1
NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdv
cmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4Mjgz
QUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3Vy
Y2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333593</attachid>
            <date>2018-02-12 06:06:46 -0800</date>
            <delta_ts>2018-02-12 06:29:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180212150644.patch</filename>
            <type>text/plain</type>
            <size>75150</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLmI2NzgwYzVkZTEyZDE5ODc0MDI0Yjk1OGQ3N2Y4MDNhZjE0MTA2NjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM2IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVBBZGRy
ZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJUEFkZHJlc3MoY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAgICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7
CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBnZXQoKSB7IHJldHVybiAm
bV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJl
c3M7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBETlNSZXNvbHZlT2JzZXJ2ZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkROU1Jlc29sdmVPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxJUEFkZHJlc3M+JikgeyB9OworICAg
IHZpcnR1YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7Cit9OworCiBXRUJDT1JFX0VYUE9SVCB2b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwotfQorV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUmVzb2x2ZUROUyhETlNSZXNvbHZlT2JzZXJ2
ZXIqKTsKIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThjMmRmNDBjM2JmYmFjNWY1YzM5MjliY2Ez
MzkzMDBmMGEwMjYxOC4uNTE1ZWY2NWQzYzRhMTEwNzg2MmUxNWFjMWVkMTU2Y2VmZmIyNjAxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwu
aCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQ
KQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVTb3VwOwor
I2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZl
UXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZv
cm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlmCisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1
ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5
ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBieSBob3Zl
cmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlk
ZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIu
CiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUy
LDE1ICs2OCwxNSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyByZXNvbHZpbmdSZXRyeURlbGF5IHsg
MTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+IHF1ZXVlOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7
CiAKICAgICByZXR1cm4gcXVldWU7CiB9CiAKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1
ZXVlKCkKLSAgICA6IG1fdGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQp
CisgICAgOiBtX2lzVXNpbmdQcm94eSh0cnVlKQorICAgICwgbV90aW1lcigqdGhpcywgJkROU1Jl
c29sdmVRdWV1ZTo6dGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdHNJbkZsaWdodCgwKQotICAg
ICwgbV9pc1VzaW5nUHJveHkodHJ1ZSkKICAgICAsIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0No
ZWNrVGltZSgwKQogewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5pdGlh
bCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNj
NDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uNDkwZDcyNTE3Nzg3ZjJkZThmYzU5YTBhZTg5
ODY5N2UzMDAyMGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEROU1Jlc29sdmVR
dWV1ZV9oCiAjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9oCiAKKyNpbmNsdWRlICJETlMuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgpAQCAtMzksMjkgKzQwLDMzIEBAIGNsYXNzIEROU1Jlc29sdmVRdWV1ZSB7CiAgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT47CiAKIHB1YmxpYzoKKyAgICBETlNS
ZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNSZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7
CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaW5nbGV0b24oKTsKIAorICAgIHZpcnR1
YWwgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVy
KikgPSAwOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQg
ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CiAgICAgICAgIC0tbV9yZXF1ZXN0c0luRmxp
Z2h0OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQorcHJvdGVj
dGVkOgogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAKLSAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQ
cm94eSgpOwotICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpOworICAgIGJv
b2wgbV9pc1VzaW5nUHJveHk7CiAKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlz
VXNpbmdQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIAogICAgIFRpbWVyIG1fdGlt
ZXI7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1lczsKICAgICBzdGQ6OmF0b21pYzxpbnQ+
IG1fcmVxdWVzdHNJbkZsaWdodDsKLSAgICBib29sIG1faXNVc2luZ1Byb3h5OwogICAgIGRvdWJs
ZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxj
b2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
PENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2lu
Y2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsu
aD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdz
KCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBtX2lzVXNpbmdQcm94eSA9
IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIp
LmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJMID0gVVJM
KFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsK
LQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZO
ZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdl
dCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0
Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0
aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3VudCA9IENGQXJyYXlHZXRD
b3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBodHRwc1Byb3h5Q291bnQg
PSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsKLSAgICBpZiAoaHR0cFBy
b3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwUHJveHlBcnJheS5n
ZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAg
aHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291bnQgPT0gMSAmJiBDRkVx
dWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlU
eXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBzUHJveHlDb3VudCA9IDA7
Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3Vu
dDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENG
SG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCi17Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBv
ayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGlj
IHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgotICAgIENGUmVs
ZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgaWYgKCFo
b3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCi0gICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSNpZiAhUExBVEZP
Uk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5M
b29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vsc2UKLSAgICAvLyBPbiBX
aW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlz
IHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhv
c3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTdmOGJkMTFmOWFmODhhNjlmY2JjZjc3YmZhODk3NGQ0ZTA0NzNkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0Yu
aCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShJT1MpCisjaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5l
dHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAoIXByb3h5U2V0dGluZ3Mp
IHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4
YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
aHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBD
RlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJM
KGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKworICAgIENGSW5kZXgg
aHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwor
ICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlB
cnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwg
a0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKKyAgICBpZiAo
aHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0
aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94
eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQor
ICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1VzaW5nUHJveHkgPSBodHRw
UHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRpYyB2b2lkIGNsaWVudENh
bGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1F
cnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVt
ZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEg
c2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGlu
aXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0
UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7CisgICAgICAgIGRlY3JlbWVu
dFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ0ZIb3N0Q2xp
ZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07CisgICAgQ0ZIb3N0UmVmIGxl
YWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBm
cm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGll
bnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQorICAgIENGSG9zdFNjaGVk
dWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0
ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdp
bGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwg
bG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworI2VuZGlmCisgICAgQ0ZI
b3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsK
K30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIC8q
IGhvc3RuYW1lICovICwgRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDBjNDk5
MjRhZGM5OGFmODYzMDlkMGJkZTc0OGMxNDQyMzlmNzQzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGTmV0IDogcHVibGljIEROU1Jlc29s
dmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTMxZjU5ODRjMGNl
OGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5o
IgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJv
eHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgLyog
aG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNv
bHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTU1NWRlNDUwYWYwN2MxZTJiNjNm
NGFkOTVlNWQyNmE5MTIzYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1
cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlz
VXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAq
LykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1
cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNl
cnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8q
IG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVz
b2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0RO
U1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTNmNjIzZTA0YzgyYzhiNmNjNTQ3ZmRm
ZWIzZTBmNzI2NjQ1MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6
CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAg
dm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1
ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVz
b2x2ZVF1ZXVlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFjOWMwNTM2YTU2MGU2Y2UzZDIyMGFhMTVi
OWZkMzZkNTY5OWZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApAQCAtMCwwICsxLDE0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisKKyNpZiBVU0UoU09V
UCkKKworI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNvdXBO
ZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBJbml0
aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3RheXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2
ZSBwcm94eSBzZXR0aW5ncy4KK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwUHJveHkgPSB0cnVlOwor
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0cnVlOworCitzdGF0aWMgYm9vbCBkaWRS
ZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCit7CisgICAgLy8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9z
c2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkkuIElmIHRoZSBmaXJzdCBpdGVtIGluIHRo
ZSBsaXN0IGlzCisgICAgLy8gZGlyZWN0Oi8vICh0aGUgdXN1YWwgY2FzZSksIHRoZW4gdGhlIHVz
ZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRoaXMgaXMgc2ltaWxhciB0bworICAgIC8v
IHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxkIGJlIG1hbnkgcG9zc2liaWxpdGllcyBy
ZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBhbmQKKyAgICAvLyBpZiB3ZSdyZSB0cnlp
bmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBlYWNoIG9uZSBpbiBvcmRlciwgYnV0IGhl
cmUgd2UgYXJlIG5vdCB0cnlpbmcKKyAgICAvLyB0byBjb25uZWN0LCBtZXJlbHkgdG8gZGVjaWRl
IHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2VkLgorICAgIHJldHVybiB1cmlzICYmICp1
cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIpOworfQorCitzdGF0aWMgdm9pZCBkaWRS
ZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29sdmVyLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCogaXNVc2luZ1Byb3h5KQoreworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdf
cHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNvbHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0
UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBk
ZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKmlzVXNpbmdQcm94eVR5cGUgPSBkaWRSZXNv
bHZlUHJveHkodXJpcy5nZXQoKSk7CisgICAgKmlzVXNpbmdQcm94eSA9IGlzVXNpbmdIdHRwUHJv
eHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRG
b3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
dm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIo
c291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVz
ZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxi
YWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRh
KQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3Vs
dCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAg
IEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOworICAgIGdfb2JqZWN0X2dldChOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29s
dmVyLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBBU1NFUlQocmVzb2x2ZXIpOworCisgICAgZ19w
cm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNV
c2luZ1Byb3h5KTsKKyAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5n
ZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0
dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29s
dmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2
ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKK30KKworc3RhdGlj
IHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjayhTb3VwQWRkcmVzcyogYWRkcmVzcywg
Z3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFU
VVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChkYXRhKTsKKyAgICBhdXRvKiBv
YnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVPYnNlcnZlcio+KGRhdGEpOworCisgICAg
VmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYgKCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2
ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBsZW47CisgICAgYXV0byog
aXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihz
b3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3MsICZsZW4pKTsKKyAgICBhZGRyZXNzZXMu
dW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcGFkZHJlc3MpKTsKKworICAgIG9i
c2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwg
bnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2
ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBh
dXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxh
YmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLmdldCgp
LCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVy
LT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBt
X29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgpKSkKKyAgICAgICAgZ19jYW5jZWxsYWJs
ZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdkMWZlZjA3ZjE3YjExNWNjOGFjZWI0YzA2ZDUwMDViOWNk
ZDU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5T
UmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNv
bHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5T
UmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3ZGRkMjIzM2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYz
OTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUg
IkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKFNPVVApCi0KLSNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHBy
ZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0
aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsKLXN0YXRpYyBib29sIGlzVXNpbmdIdHRw
c1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlz
KQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZv
ciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcwotICAgIC8vIGRpcmVj
dDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBh
IHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KLSAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0
aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJl
ZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxk
IGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0g
ICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3Vs
ZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJk
aXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29s
dmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5
cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9m
aW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5
IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwot
ICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5
OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmpl
Y3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAg
IGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNp
bmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMg
dm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJv
eHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwg
c3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJl
c29sdmVyOwotICAgIGdfb2JqZWN0X2dldChOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Np
b24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKLSAg
ICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMo
cmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNv
bHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20v
IiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQ
cm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBn
dWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVz
b2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24o
KS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZl
ZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYyYTE0MDdjMGYwYmNjZjIzNzIxMi4uMTA4
YzY5OTUyM2EyODBiZTg5NjhjNGQyMzY3YzE5ODc1NWNjZmUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCkBAIC00MCw4ICs0MCwxOCBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgorI2Vsc2UKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRm
b3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E7CisjZWxzZQordXNpbmcgTmV0d29ya1JUQ1Jl
c29sdmVyUGxhdGZvcm0gPSBOZXR3b3JrUlRDUmVzb2x2ZXI7CisjZW5kaWYKKwogc3RhdGljIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCiB7CiAgICAg
YXV0byB0aHJlYWQgPSBydGM6OlRocmVhZDo6Q3JlYXRlV2l0aFNvY2tldFNlcnZlcigpOwpAQCAt
MTY0LDEzICsxNzQsMjEgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVOZXR3
b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogdm9pZCBOZXR3b3Jr
UlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxO
ZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6
OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtPihpZGVudGlmaWVy
LCBbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9y
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsK
ICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVy
cm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEp
LCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6
U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7CisgICAgICAg
IGF1dG8mIHBsYXRmb3JtQWRkcmVzc2VzID0gcmVzdWx0LnZhbHVlKCkuZ2V0KCk7CisgICAgICAg
IHNpemVfdCBjb3VudCA9IHBsYXRmb3JtQWRkcmVzc2VzLnNpemUoKTsKKyAgICAgICAgVmVjdG9y
PFdlYktpdDo6UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgICAgIGFkZHJl
c3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgICAgICBmb3IgKGF1dG8g
YWRkcmVzcyA6IHBsYXRmb3JtQWRkcmVzc2VzKQorICAgICAgICAgICAgYWRkcmVzc2VzLnVuY2hl
Y2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy5n
ZXQoKS0+c2luX2FkZHIpKSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNz
ZXMpLCBpZGVudGlmaWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7
CiAgICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNm
ZjAxNmUuLmExM2I5Zjk2OTczZjg3YTRhY2YyYzM0MTM3NTM3MzNlNzVkOGYzNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyLmNwcApAQCAtMzIsNjggKzMyLDMyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9U
eXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKLXsK
LSAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9y
LT5kb21haW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1
dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNf
Y2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0Owot
ICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRB
ZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQpOwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRk
cmVzc2VzKTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0g
ICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0
YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRk
cmVzc2VzLCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAg
ICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6
OklQQWRkcmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNv
bXBsZXRlZChhZGRyZXNzZXMpOwotfQotCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9j
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENS
ZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigpCiB7
Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNldENsaWVu
dChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3ZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVz
cz4mIGFkZHJlc3NlcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhO
YW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkp
OwotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJl
c29sdmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9o
b3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7
Ci0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5n
ZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1f
Y29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFkZHJlc3Nl
cyB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQordm9pZCBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBDRkhvc3RD
YW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0
QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9j
b21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKKyAgICBXZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJlc3Ms
IHRoaXMpOwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0IFZl
Y3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCit2b2lkIE5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCgpCiB7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFk
ZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpzdG9wUmVzb2x2ZUROUyh0aGlzKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCmluZGV4IDFiY2Y3MzZlNzY3YTY3MDRi
NWNlOTdjZGE4YzcyM2JkZTM1ZTcyNzguLjgyNGE4ZmJmZmZjZGY0ODY3MDdkYTUzNDI5MTYyODU4
MWE4NDY5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCkBAIC0yOCwzMCArMjgsMzEgQEAKICNpZiBVU0Uo
TElCV0VCUlRDKQogCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgotI2luY2x1ZGUgPENGTmV0d29y
ay9DRkhvc3QuaD4KKyNpbmNsdWRlICJXZWJDb3JlL0ROUy5oIgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK2NsYXNzIE5ldHdv
cmtSVENSZXNvbHZlciA6IHB1YmxpYyBXZWJDb3JlOjpETlNSZXNvbHZlT2JzZXJ2ZXIgewogcHVi
bGljOgogICAgIGVudW0gY2xhc3MgRXJyb3IgeyBVbmtub3duLCBDYW5jZWxsZWQgfTsKIAotICAg
IHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJyb3I+OworICAgIHVzaW5n
IEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRXJyb3I+OwogICAgIHVzaW5nIENvbXBsZXRp
b25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFkZHJlc3Nlc09yRXJyb3Im
Jik+OwogCi0gICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVy
JiYpOwotICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRD
UmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dmlydHVhbCB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CiAKLSAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0
cmluZyYgYWRkcmVzcyk7Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0
KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAg
IHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Cisg
ICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4mKSBmaW5h
bDsKKyAgICB1aW50NjRfdCBnZXRJZCgpIGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfTsK
IAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAg
Q29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZI
b3N0UmVmPiBtX2hvc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGZkNjMxY2M3YmI0MDExZmM2Yjk5NGJhMmE5
ZjRkZDQ4NWYwMzAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCkBAIC0wLDAgKzEsOTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlIDx3dGYvRXhw
ZWN0ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkTmFt
ZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3Ry
ZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQoreworICAgIEFTU0VSVF9VTlVTRUQodHlwZUlu
Zm8sICF0eXBlSW5mbyk7CisKKyAgICBpZiAoZXJyb3ItPmRvbWFpbikgeworICAgICAgICAvLyBG
SVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHByb3ZpZGVkIGlu
IHRoZSBjYWxsYmFjay4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChpbmZv
KTsKKyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hKj4oaW5mbyk7CisKKyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29s
dmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAm
cmVzdWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVf
dCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9y
PFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBjb3VudDsgKytpbmRleCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYp
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAg
ICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tl
ZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICByZXNvbHZl
ci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50
aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNj
aGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0
YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9z
dENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhp
cywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hv
c3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0
aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BE
ZWZhdWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0
aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2E6OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTdiYjMxMDg1YTY1NjZmZTNjMGQzYWMzMWFh
YTJhYjM0ZjAyYTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsxLDUwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVk
ZSAiTmV0d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSA6
IHB1YmxpYyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IE5ldHdv
cmtSVENSZXNvbHZlckNvY29hKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
JiYpOworICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpIGZpbmFsOworCisgICAgdm9pZCBz
dGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtR1RLLmNtYWtlCmluZGV4IDUzNjFhY2NmODIzNjkxYzM1N2Q4ZTEzMzFmZDQxNTkyYzM5ZDgx
NjQuLjViNjBjM2RkZTZmYzFhYTIxMWM1NzQ3NDRjMjg1ODBiMGJlZGRkN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtNDgsNiArNDgsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNF
UwogICAgIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogICAgIE5l
dHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCisgICAg
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKwogICAgIFBsYXRm
b3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4L0F0
dGFjaG1lbnRVbml4LmNwcAogICAgIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNjM5ZmQ2YTdlOTkwMmU2NDM1NzI5MDY4OWExZDNkZTAyZTRiNDFiMS4uNjBhZDFkZmQ2NmIy
ZDFjOTg5N2U0NzgyOGQ0Yjc5NzI4ODIzNGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTAsNiArOTEwLDcgQEAKIAkJNDEwNDgy
Q0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJU
Q05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAgLyogUlRDTmV0
d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEw
NDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1NTUx
RkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUg
LyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDExMkI1NTUxRkEwRUE3QTAwRTY3
OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRGNzM2
MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29y
ay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMw
NzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJCTQx
MzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIwMDAz
OUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpAQCAtMzI2OSw2ICszMjcwLDgg
QEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNv
bHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3
ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1
NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4
NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0aCA9
IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5j
cHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBO
ZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdv
cmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29j
a2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjA0LDYgKzYyMDcsOCBAQAog
CQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVzc2Fn
ZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNv
bHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5
IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1OUQxREU4NEZCMDAwMzlFQzY5
IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDUzNiw2ICsxMDU0MSw3
IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUgLyogTmV0d29y
a1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMTJC
NTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBO
ZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUw
MEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVudHJ5
UG9pbnQubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333594</attachid>
            <date>2018-02-12 06:29:13 -0800</date>
            <delta_ts>2018-02-13 01:18:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180212152912.patch</filename>
            <type>text/plain</type>
            <size>75151</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLmI2NzgwYzVkZTEyZDE5ODc0MDI0Yjk1OGQ3N2Y4MDNhZjE0MTA2NjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM2IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVBBZGRy
ZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJUEFkZHJlc3MoY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNp
emVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAgICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7
CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBnZXQoKSB7IHJldHVybiAm
bV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJl
c3M7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBETlNSZXNvbHZlT2JzZXJ2ZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkROU1Jlc29sdmVPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxJUEFkZHJlc3M+JikgeyB9OworICAg
IHZpcnR1YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7Cit9OworCiBXRUJDT1JFX0VYUE9SVCB2b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwotfQorV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUmVzb2x2ZUROUyhETlNSZXNvbHZlT2JzZXJ2
ZXIqKTsKIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThjMmRmNDBjM2JmYmFjNWY1YzM5MjliY2Ez
MzkzMDBmMGEwMjYxOC4uNTE1ZWY2NWQzYzRhMTEwNzg2MmUxNWFjMWVkMTU2Y2VmZmIyNjAxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwu
aCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQ
KQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVTb3VwOwor
I2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZl
UXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZv
cm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlmCisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1
ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5
ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZldGNoIGlzIHRyaWdnZXJlZCBieSBob3Zl
cmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2luZywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlk
ZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Npbmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIu
CiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUy
LDE1ICs2OCwxNSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyByZXNvbHZpbmdSZXRyeURlbGF5IHsg
MTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+IHF1ZXVlOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7
CiAKICAgICByZXR1cm4gcXVldWU7CiB9CiAKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1
ZXVlKCkKLSAgICA6IG1fdGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQp
CisgICAgOiBtX2lzVXNpbmdQcm94eSh0cnVlKQorICAgICwgbV90aW1lcigqdGhpcywgJkROU1Jl
c29sdmVRdWV1ZTo6dGltZXJGaXJlZCkKICAgICAsIG1fcmVxdWVzdHNJbkZsaWdodCgwKQotICAg
ICwgbV9pc1VzaW5nUHJveHkodHJ1ZSkKICAgICAsIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0No
ZWNrVGltZSgwKQogewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5pdGlh
bCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNj
NDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uNDkwZDcyNTE3Nzg3ZjJkZThmYzU5YTBhZTg5
ODY5N2UzMDAyMGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEROU1Jlc29sdmVR
dWV1ZV9oCiAjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9oCiAKKyNpbmNsdWRlICJETlMuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgpAQCAtMzksMjkgKzQwLDMzIEBAIGNsYXNzIEROU1Jlc29sdmVRdWV1ZSB7CiAgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT47CiAKIHB1YmxpYzoKKyAgICBETlNS
ZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNSZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7
CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBzaW5nbGV0b24oKTsKIAorICAgIHZpcnR1
YWwgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZl
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVy
KikgPSAwOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogICAgIHZvaWQg
ZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CiAgICAgICAgIC0tbV9yZXF1ZXN0c0luRmxp
Z2h0OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBETlNSZXNvbHZlUXVldWUoKTsKLQorcHJvdGVj
dGVkOgogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAKLSAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQ
cm94eSgpOwotICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpOworICAgIGJv
b2wgbV9pc1VzaW5nUHJveHk7CiAKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlz
VXNpbmdQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIAogICAgIFRpbWVyIG1fdGlt
ZXI7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1lczsKICAgICBzdGQ6OmF0b21pYzxpbnQ+
IG1fcmVxdWVzdHNJbkZsaWdodDsKLSAgICBib29sIG1faXNVc2luZ1Byb3h5OwogICAgIGRvdWJs
ZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxj
b2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZl
UXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUg
PENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2lu
Y2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsu
aD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdz
KCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBtX2lzVXNpbmdQcm94eSA9
IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIp
LmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJMID0gVVJM
KFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsK
LQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZO
ZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdl
dCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0
Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0
aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3VudCA9IENGQXJyYXlHZXRD
b3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBodHRwc1Byb3h5Q291bnQg
PSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsKLSAgICBpZiAoaHR0cFBy
b3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwUHJveHlBcnJheS5n
ZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAg
aHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291bnQgPT0gMSAmJiBDRkVx
dWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlU
eXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBzUHJveHlDb3VudCA9IDA7
Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3Vu
dDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENG
SG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCi17Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBv
ayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGlj
IHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgotICAgIENGUmVs
ZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgaWYgKCFo
b3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCi0gICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSNpZiAhUExBVEZP
Uk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5M
b29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vsc2UKLSAgICAvLyBPbiBX
aW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlz
IHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhv
c3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTdmOGJkMTFmOWFmODhhNjlmY2JjZjc3YmZhODk3NGQ0ZTA0NzNkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0Yu
aCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShJT1MpCisjaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5l
dHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAoIXByb3h5U2V0dGluZ3Mp
IHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4
YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
aHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBD
RlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJM
KGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKworICAgIENGSW5kZXgg
aHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwor
ICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlB
cnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwg
a0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKKyAgICBpZiAo
aHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0
aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94
eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQor
ICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1VzaW5nUHJveHkgPSBodHRw
UHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRpYyB2b2lkIGNsaWVudENh
bGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1F
cnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVt
ZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEg
c2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGlu
aXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0
UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7CisgICAgICAgIGRlY3JlbWVu
dFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ0ZIb3N0Q2xp
ZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07CisgICAgQ0ZIb3N0UmVmIGxl
YWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBm
cm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGll
bnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQorICAgIENGSG9zdFNjaGVk
dWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0
ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdp
bGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwg
bG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworI2VuZGlmCisgICAgQ0ZI
b3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsK
K30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIC8q
IGhvc3RuYW1lICovICwgRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDBjNDk5
MjRhZGM5OGFmODYzMDlkMGJkZTc0OGMxNDQyMzlmNzQzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGTmV0IDogcHVibGljIEROU1Jlc29s
dmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNl
cnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFs
OworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTMxZjU5ODRjMGNl
OGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5o
IgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJv
eHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgLyog
aG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNv
bHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTU1NWRlNDUwYWYwN2MxZTJiNjNm
NGFkOTVlNWQyNmE5MTIzYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1
cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlz
VXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAq
LykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1
cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNl
cnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8q
IG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVz
b2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0RO
U1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTNmNjIzZTA0YzgyYzhiNmNjNTQ3ZmRm
ZWIzZTBmNzI2NjQ1MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6
CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAg
dm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVk
OgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1
ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVz
b2x2ZVF1ZXVlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFjOWMwNTM2YTU2MGU2Y2UzZDIyMGFhMTVi
OWZkMzZkNTY5OWZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApAQCAtMCwwICsxLDE0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisKKyNpZiBVU0UoU09V
UCkKKworI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNvdXBO
ZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBJbml0
aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3RheXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2
ZSBwcm94eSBzZXR0aW5ncy4KK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwUHJveHkgPSB0cnVlOwor
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0cnVlOworCitzdGF0aWMgYm9vbCBkaWRS
ZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCit7CisgICAgLy8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9z
c2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkkuIElmIHRoZSBmaXJzdCBpdGVtIGluIHRo
ZSBsaXN0IGlzCisgICAgLy8gZGlyZWN0Oi8vICh0aGUgdXN1YWwgY2FzZSksIHRoZW4gdGhlIHVz
ZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRoaXMgaXMgc2ltaWxhciB0bworICAgIC8v
IHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxkIGJlIG1hbnkgcG9zc2liaWxpdGllcyBy
ZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBhbmQKKyAgICAvLyBpZiB3ZSdyZSB0cnlp
bmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBlYWNoIG9uZSBpbiBvcmRlciwgYnV0IGhl
cmUgd2UgYXJlIG5vdCB0cnlpbmcKKyAgICAvLyB0byBjb25uZWN0LCBtZXJlbHkgdG8gZGVjaWRl
IHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2VkLgorICAgIHJldHVybiB1cmlzICYmICp1
cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIpOworfQorCitzdGF0aWMgdm9pZCBkaWRS
ZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29sdmVyLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCogaXNVc2luZ1Byb3h5KQoreworICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHVW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdf
cHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNvbHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0
UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBk
ZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKmlzVXNpbmdQcm94eVR5cGUgPSBkaWRSZXNv
bHZlUHJveHkodXJpcy5nZXQoKSk7CisgICAgKmlzVXNpbmdQcm94eSA9IGlzVXNpbmdIdHRwUHJv
eHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRG
b3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
dm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIo
c291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVz
ZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxi
YWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRh
KQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3Vs
dCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAg
IEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOworICAgIGdfb2JqZWN0X2dldChOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29s
dmVyLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBBU1NFUlQocmVzb2x2ZXIpOworCisgICAgZ19w
cm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNV
c2luZ1Byb3h5KTsKKyAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5n
ZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0
dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29s
dmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2
ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKK30KKworc3RhdGlj
IHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjayhTb3VwQWRkcmVzcyogYWRkcmVzcywg
Z3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFU
VVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChkYXRhKTsKKyAgICBhdXRvKiBv
YnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVPYnNlcnZlcio+KGRhdGEpOworCisgICAg
VmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYgKCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2
ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBsZW47CisgICAgYXV0byog
aXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihz
b3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3MsICZsZW4pKTsKKyAgICBhZGRyZXNzZXMu
dW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcGFkZHJlc3MpKTsKKworICAgIG9i
c2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291
cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwg
bnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2
ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBh
dXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJsZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxh
YmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLmdldCgp
LCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJsZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVy
LT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBt
X29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgpKSkKKyAgICAgICAgZ19jYW5jZWxsYWJs
ZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdkMWZlZjA3ZjE3YjExNWNjOGFjZWI0YzA2ZDUwMDViOWNk
ZDU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5T
UmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNv
bHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5T
UmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3ZGRkMjIzM2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYz
OTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUg
IkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKFNPVVApCi0KLSNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHBy
ZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0
aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsKLXN0YXRpYyBib29sIGlzVXNpbmdIdHRw
c1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlz
KQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZv
ciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcwotICAgIC8vIGRpcmVj
dDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBh
IHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KLSAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0
aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJl
ZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxk
IGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0g
ICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3Vs
ZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJk
aXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29s
dmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5
cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsKLSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9m
aW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5
IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwot
ICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5
OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmpl
Y3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAg
IGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNp
bmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMg
dm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJv
eHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwg
c3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJl
c29sdmVyOwotICAgIGdfb2JqZWN0X2dldChOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Np
b24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKLSAg
ICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMo
cmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNv
bHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20v
IiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQ
cm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBn
dWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVz
b2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24o
KS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZl
ZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYyYTE0MDdjMGYwYmNjZjIzNzIxMi4uM2Zm
NTg0YzUxZDM5NzQ1NDI1NmQxNjUxY2MyYWEzYTdmYzFhZTI3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCkBAIC00MCw4ICs0MCwxOCBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNs
dWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2luZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0
Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hOworI2Vsc2UKK3VzaW5nIE5ldHdvcmtSVENS
ZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29sdmVyOworI2VuZGlmCisKIHN0YXRpYyBp
bmxpbmUgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBjcmVhdGVUaHJlYWQoKQogewogICAg
IGF1dG8gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsKQEAg
LTE2NCwxMyArMTc0LDIxIEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0
d29ya1JUQ1NvY2tldE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAKIHZvaWQgTmV0d29y
a1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya1JUQ1Jlc29sdmVyPihbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVy
OjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlc29sdmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybT4oaWRlbnRpZmll
ciwgW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJv
ciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7
CiAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gTmV0d29ya1JUQ1Jlc29sdmVyOjpF
cnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpSZXNvbHZlZEFkZHJlc3NFcnJvcigx
KSwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
bV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6
OlNldFJlc29sdmVkQWRkcmVzcyhyZXN1bHQudmFsdWUoKSksIGlkZW50aWZpZXIpOworICAgICAg
ICBhdXRvJiBwbGF0Zm9ybUFkZHJlc3NlcyA9IHJlc3VsdC52YWx1ZSgpLmdldCgpOworICAgICAg
ICBzaXplX3QgY291bnQgPSBwbGF0Zm9ybUFkZHJlc3Nlcy5zaXplKCk7CisgICAgICAgIFZlY3Rv
cjxXZWJLaXQ6OlJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgICAgICBhZGRy
ZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICAgICAgZm9yIChhdXRv
IGFkZHJlc3MgOiBwbGF0Zm9ybUFkZHJlc3NlcykKKyAgICAgICAgICAgIGFkZHJlc3Nlcy51bmNo
ZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3Mu
Z2V0KCktPnNpbl9hZGRyKSkpOworCisgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVz
c2VzKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAgICAgcmVzb2x2ZXItPnN0YXJ0KGFkZHJlc3Mp
OwogICAgIG1fcmVzb2x2ZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc29sdmVyKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMz
ZmYwMTZlLi5hMTNiOWY5Njk3M2Y4N2E0YWNmMmMzNDEzNzUzNzMzZTc1ZDhmMzY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHAKQEAgLTMyLDY4ICszMiwzMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZv
VHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCi17
Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKLQotICAgIGlmIChlcnJv
ci0+ZG9tYWluKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBi
dXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUKGluZm8pOwotICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGlj
X2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyKj4oaW5mbyk7Ci0KLSAgICBCb29sZWFuIHJlc3VsdDsK
LSAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0
QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKLQotICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFk
ZHJlc3Nlcyk7Ci0gICAgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOwot
ICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKLQotICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewotICAgICAgICBDRkRh
dGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFk
ZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKLSAg
ICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRj
OjpJUEFkZHJlc3MoYWRkcmVzcy0+c2luX2FkZHIpKSk7Ci0gICAgfQotICAgIHJlc29sdmVyLT5j
b21wbGV0ZWQoYWRkcmVzc2VzKTsKLX0KLQotTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRD
UmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICA6IG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCitOZXR3b3JrUlRD
UmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKQogewogfQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIoKQog
ewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9v
cEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBDRkhvc3RTZXRDbGll
bnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKICAgICBpZiAoYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpVbmtub3duKSk7CiB9CiAKLXZvaWQg
TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit2b2lkIE5l
dHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJl
c3M+JiBhZGRyZXNzZXMpCiB7Ci0gICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRo
TmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
KTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBy
ZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1f
aG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUp
OwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3Qu
Z2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOwotICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZSht
X2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhZGRyZXNz
ZXMgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKK3ZvaWQgTmV0d29y
a1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgQ0ZIb3N0
Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9z
dEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1f
Y29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNz
LCB0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZChjb25zdCBW
ZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRkcmVzc2VzKQordm9pZCBOZXR3b3JrUlRD
UmVzb2x2ZXI6OnN0b3AoKQogewotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBh
ZGRyZXNzZXMgfSk7CisgICAgV2ViQ29yZTo6c3RvcFJlc29sdmVETlModGhpcyk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0
YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li44MjRhOGZiZmZmY2RmNDg2NzA3ZGE1MzQyOTE2Mjg1
ODFhODQ2OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsMzAgKzI4LDMxIEBACiAjaWYgVVNF
KExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKLSNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZIb3N0Lmg+CisjaW5jbHVkZSAiV2ViQ29yZS9ETlMuaCIKICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtSVENSZXNvbHZlciB7CitjbGFzcyBOZXR3
b3JrUlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6RE5TUmVzb2x2ZU9ic2VydmVyIHsKIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwgQ2FuY2VsbGVkIH07CiAKLSAg
ICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPj4sIEVycm9yPjsKKyAgICB1c2lu
ZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPj4sIEVycm9yPjsKICAgICB1c2luZyBDb21wbGV0
aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChBZGRyZXNzZXNPckVycm9y
JiYpPjsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxl
ciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CisgICAgZXhwbGljaXQgTmV0d29ya1JU
Q1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyJiYpOworICAg
IHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwogCi0gICAgdm9pZCBzdGFydChjb25zdCBT
dHJpbmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKLSAg
ICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYpOwor
ICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+JikgZmlu
YWw7CisgICAgdWludDY0X3QgZ2V0SWQoKSBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH07
CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAg
IENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgUmV0YWluUHRyPENG
SG9zdFJlZj4gbV9ob3N0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RmZDYzMWNjN2JiNDAxMWZjNmI5OTRiYTJh
OWY0ZGQ0ODVmMDMwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApAQCAtMCwwICsxLDkzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9pZCByZXNvbHZlZE5h
bWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0
cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJ
bmZvLCAhdHlwZUluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAgICAgICAgLy8g
RklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBp
biB0aGUgY2FsbGJhY2suCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoaW5m
byk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSo+KGluZm8pOworCisgICAgQm9vbGVhbiByZXN1bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNv
bHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwg
JnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBzaXpl
X3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOworICAgIFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVm
KUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKKyAgICAg
ICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRy
X2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNr
ZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICB9CisgICAgcmVzb2x2
ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IE5ldHdvcmtSVENSZXNvbHZlcihpZGVu
dGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK3sKK30KKworTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2E6On5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpCit7CisgICAgQ0ZIb3N0VW5z
Y2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpz
dGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7CisgICAgbV9ob3N0ID0gYWRvcHRDRihDRkhv
c3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpKTsKKyAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRo
aXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9o
b3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdp
dGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOworICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hOjpzdG9wKCkKK3sKKyAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0
KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKKyAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3YmIzMTA4NWE2NTY2ZmUzYzBkM2FjMzFh
YWEyYWIzNGYwMmExMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1
ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eg
OiBwdWJsaWMgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
ciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKSBmaW5hbDsKKworICAgIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5h
bDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCA1MzYxYWNjZjgyMzY5MWMzNTdkOGUxMzMxZmQ0MTU5MmMzOWQ4
MTY0Li41YjYwYzNkZGU2ZmMxYWEyMTFjNTc0NzQ0YzI4NTgwYjBiZWRkZDdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTQ4LDYgKzQ4LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJD
RVMKICAgICBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKICAgICBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKIAorICAg
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisKICAgICBQbGF0
Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5jcHAKICAgICBQbGF0Zm9ybS9JUEMvdW5peC9B
dHRhY2htZW50VW5peC5jcHAKICAgICBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDYzOWZkNmE3ZTk5MDJlNjQzNTcyOTA2ODlhMWQzZGUwMmU0YjQxYjEuLjYwYWQxZGZkNjZi
MmQxYzk4OTdlNDc4MjhkNGI3OTcyODgyMzRmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTEwLDYgKzkxMCw3IEBACiAJCTQxMDQ4
MkNEMURERDMyNEMwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBS
VENOZXR3b3JrLmNwcCAqLzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05l
dHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMTJCNTU1
MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1
IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi87IH07CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0Rjcz
NjMgLyogTGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdv
cmsuaCAqLzsgfTsKIAkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2Nr
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
MDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwogCQk0
MTMwNzVBQTFERTg1RjMwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMyNjksNiArMzI3MCw4
IEBACiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2
Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJC
NTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5j
cHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5
ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLmg7IHBhdGgg
PSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQu
Y3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrUlRDU29ja2V0Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Nv
Y2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIwNCw2ICs2MjA3LDggQEAK
IAkJCQk0MURDNDU5ODFFM0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3Nh
Z2VzLmluICovLAogCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwICovLAogCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXIuaCAqLywKKwkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwICovLAorCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovLAogCQkJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVD
NjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovLAogCQkJCTQxMzA3NTlEMURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDU29ja2V0Lm1lc3NhZ2VzLmluICovLApAQCAtMTA1MzYsNiArMTA1NDEs
NyBAQAogCQkJCTQxREM0NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5ldHdv
cmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEy
QjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1
MDBGMzI4MUQgLyogTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRy
eVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333676</attachid>
            <date>2018-02-13 01:18:26 -0800</date>
            <delta_ts>2018-02-13 01:40:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180213101824.patch</filename>
            <type>text/plain</type>
            <size>75260</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNDcwMjAwMDY1NzQz
ZmVmYWM2N2RiMjY2MmY1ZmU0NjY2YjY0MS4uOWNhNDVlZTliYTQzNzk0MDM0OWZlMzY3Njk2NThl
NTFlNWVmNjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAg
PHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gTGF5b3V0IHRlc3Qg
ZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVzLWNsaXAuaHRtbCBjcmFzaGVzIHdpdGggR1N0cmVh
bWVyLUNSSVRJQ0FMICoqOiBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZTogYXNzZXJ0aW9uICdz
ZWdtZW50LT5mb3JtYXQgPT0gZm9ybWF0JyBmYWlsZWQgaW4gZ3N0X3NlZ21lbnRfdG9fc3RyZWFt
X3RpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1MDZkM2U5ODJmYTczZmRmY2RkZGM0NGNlNTJhYmIwZTY4YTRm
NGI0Li4wYmFmY2M4ZGU1YTViOTEyNTE2YmJmYjdmNGY5ZDM3ZjMzOWIwMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhbiBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNvZGUgaW4g
dGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAorICAgICAg
ICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3JtIGRpcmVj
dG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFpbHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0
ZSBhbiBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRl
IHRoZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcg
SVBBZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGli
d2VicnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRo
ZSBETlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29k
ZSBpbiB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50
aWZpZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRD
UmVzb2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVk
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBB
ZGQgYSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAg
ICAgICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBB
dm9pZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBj
bGFzc2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFt
ZSByZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0
KTogTWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAg
ICAgICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2Rz
IHRoYXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1l
dGhvZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2lu
ZyBzdXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMi0w
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBpbiBhIGdp
dmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5k
ZXggZWU3YjQwNzIwZjBkOGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJk
N2E3MTM5OWRlZWZkYzkyNTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCkBAIC01MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9j
Zi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggM2U4NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1
MjBhYjBmY2UwZGY0ODMyZjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQxMyw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbQogCi0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJv
eHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzE4ODkyNGY4NmQzY2NhNGJkODU0
NjQzNjVmNmExY2VlOWE3NzVjZi4uYmNjNGE1YjhmZjc0NmE5Y2IzMTEzMjI1YTBlMzM0MjZiNmVm
MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MDIsNiArMTcwMiw3IEBAIHBsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKK3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDZhYWI0YzkxYTMxYmFhYTMxNDM4ODY4NDY3YmIwZWUyOTZjN2Q1MzMuLjBhYWRkMjg4OWRi
ZjQ2OWZmZDZjNjIzOTUyNTRhMDdmYWJlM2E2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMzEyLDcgKzMxMiw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5j
cHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGRiYTYzZjJhNjJjOGIzOGFhY2Y2OGZmM2NlMmExNmZjMjE2YTk1OTQuLmFkZjYxNGQ3OWFkNThk
ZTY5YzE3NWUxNWRmZTgzODg3ZWJhMzU0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOTYsNiArMjE5Niw3IEBACiAJCTdF
RTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVB
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVl
c3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Y0
Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8qIEpTUmVh
ZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsu
aCAqLzsgfTsKQEAgLTk1MTYsNiArOTUxNyw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVC
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25z
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZE
ODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMzMsOCArMTIwMzUsOSBAQAogCQlCMkU0RUM5
NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlND
Rk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNDRk5ldC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEz
QzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg1MTYsNiArMTg1MTksNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBD
cmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZFIC8qIERh
dGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5j
cHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTdD
NjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAogCQkJCUZB
NkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAgLTIzMjMy
LDcgKzIzMjM2LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZFMzgwMEU3
OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4MTc4RTMz
NjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBFODJGODI3
MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2NDhD
RCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQyNkUzODAw
RkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUz
ODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEzRUYzNDcx
Njg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAqLywKQEAg
LTI3MDY4LDYgKzI3MDczLDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlz
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBE
aXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3
MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVG
NDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0JC
NTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA3M2MwMTRmMTVj
MTg2NDcyMzJjMzMwODY3Y2Y4MjE1ODI0YjAxNjZmLi5lM2NjOTA4Y2RmYWFhZTdmMDBmMjYwMzg3
MmRhNTUwZTZiMDAzZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAgLTIwLDcg
KzIwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZjMWIyOTc5NS4uZDY0
ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuY3BwCiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ1Mjk1MDBiZjE1YmRjNDc0ZjRhZDNjMDFiN2JmYzhh
ODU3NDAyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlMuaCIKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3Ru
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVz
b2x2ZShob3N0bmFtZSwgb2JzZXJ2ZXIpOworfQorCit2b2lkIHN0b3BSZXNvbHZlRE5TKEROU1Jl
c29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVl
OjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShvYnNlcnZlcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLmIyOTIyYzAxYjVmYjUzMTYwNWM0ZDk2Y2QxNWI1NGQ3NzFiZDRhZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDQxIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgSVBBZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9p
biogYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9ICphZGRyZXNzOworICAg
IH0KKworICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiogZ2V0KCkgeyByZXR1cm4gJm1fYWRk
cmVzczsgfTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gbV9hZGRyZXNzOwor
fTsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgRE5TUmVzb2x2ZU9ic2VydmVyIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5ETlNSZXNvbHZlT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVh
bCB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8SVBBZGRyZXNzPiYpIHsgfTsKKyAgICB2aXJ0
dWFsIHVpbnQ2NF90IGdldElkKCkgPSAwOworfTsKKwogV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmVm
ZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKLX0KK1dFQkNPUkVfRVhQT1JUIHZvaWQg
cmVzb2x2ZUROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqKTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcFJlc29sdmVETlMoRE5TUmVzb2x2ZU9ic2VydmVyKik7
CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
TlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVmNWMzOTI5YmNhMzM5MzAw
ZjBhMDI2MTguLjUxNWVmNjVkM2M0YTExMDc4NjJlMTVhYzFlZDE1NmNlZmZiMjYwMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHAKQEAgLTI3LDExICsyNywyNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1
ZXVlU291cC5oIgorI2VsaWYgVVNFKENGKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0
LmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisj
ZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBVU0UoU09VUCkKK3Vz
aW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlU291cDsKKyNlbGlm
IFVTRShDRikKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQ7CisjZWxpZiBVU0UoQ1VSTCkKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0g
RE5TUmVzb2x2ZVF1ZXVlQ3VybDsKKyNlbmRpZgorCiAvLyBXaGVuIHJlc29sdmUgcXVldWUgaXMg
ZW1wdHksIHdlIGZpcmUgYXN5bmMgcmVzb2x1dGlvbiByZXF1ZXN0cyBpbW1lZGlhdGVseSAod2hp
Y2ggaXMgaW1wb3J0YW50IGlmIHRoZSBwcmVmZXRjaCBpcyB0cmlnZ2VyZWQgYnkgaG92ZXJpbmcp
LgogLy8gQnV0IGR1cmluZyBwYWdlIHBhcnNpbmcsIHdlIHNob3VsZCBjb2FsZXNjZSBpZGVudGlj
YWwgcmVxdWVzdHMgdG8gYXZvaWQgc3RyZXNzaW5nIG91dCB0aGUgRE5TIHJlc29sdmVyLgogc3Rh
dGljIGNvbnN0IGludCBnTmFtZXNUb1Jlc29sdmVJbW1lZGlhdGVseSA9IDQ7CkBAIC01MiwxNSAr
NjgsMTUgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9t
cyB9OwogCiBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsK
LSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAg
ICAgcmV0dXJuIHF1ZXVlOwogfQogCiBETlNSZXNvbHZlUXVldWU6OkROU1Jlc29sdmVRdWV1ZSgp
Ci0gICAgOiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2ZVF1ZXVlOjp0aW1lckZpcmVkKQorICAg
IDogbV9pc1VzaW5nUHJveHkodHJ1ZSkKKyAgICAsIG1fdGltZXIoKnRoaXMsICZETlNSZXNvbHZl
UXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3RzSW5GbGlnaHQoMCkKLSAgICAsIG1f
aXNVc2luZ1Byb3h5KHRydWUpCiAgICAgLCBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1Rp
bWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2lsbCByZXR1cm4gdGhlIGluaXRpYWwgdmFs
dWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCmluZGV4IGQyYTdhNzdiOGJjYzQ4ZDFj
MDVhYmIxODY1ZDdlMmJkMmVmMGI4YWEuLjQ5MGQ3MjUxNzc4N2YyZGU4ZmM1OWEwYWU4OTg2OTdl
MzAwMjBkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNS
ZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBETlNSZXNvbHZlUXVldWVf
aAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisjaW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFzcyBETlNSZXNvbHZlUXVldWUgewogICAgIGZyaWVuZCBO
ZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+OwogCiBwdWJsaWM6CisgICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAg
ICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xldG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKEROU1Jlc29sdmVPYnNlcnZlciopID0g
MDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVzdHNJbkZsaWdodDsK
ICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoK
ICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHko
KTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG1f
aXNVc2luZ1Byb3h5OwogCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5n
UHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3RpbWVyOwog
CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAgc3RkOjphdG9taWM8aW50PiBtX3Jl
cXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQcm94eTsKICAgICBkb3VibGUgbV9s
YXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFjZDJkN2M4NmU4ZTM3MjAyYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGlu
akB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
LmgiCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRl
ICJMb2FkZXJSdW5Mb29wQ0YuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0j
ZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBk
YXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94
eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsK
LSAgICBpZiAoIXByb3h5U2V0dGluZ3MpIHsKLSAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxz
ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0
cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVh
dGVDRlVSTCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJz
ZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0KLSAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkp
OwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENG
TmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3Mu
Z2V0KCkpKTsKLQotICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQo
aHR0cFByb3h5QXJyYXkuZ2V0KCkpOwotICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZB
cnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgaWYgKGh0dHBQcm94eUNv
dW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBQ
cm94eUNvdW50ID0gMDsKLSAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChD
RkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtl
eSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOwotCi0g
ICAgbV9pc1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19
Ci0KLXN0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJ
bmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVR
dWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8g
Y2FsbCBzaW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJp
YWJsZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KLSAgICBDRlJlbGVhc2Uo
dGhlSG9zdCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0g
ICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5h
bWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgIGlmICghaG9zdCkg
ewotICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9
OwotICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0
IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgotICAgIEJvb2xlYW4gcmVz
dWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4
dCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0jaWYgIVBMQVRGT1JNKFdJ
TikKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdl
dE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSNlbHNlCi0gICAgLy8gT24gV2luZG93
cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVy
ZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhS
dW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKLSNlbmRpZgotICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NG
SG9zdEFkZHJlc3NlcywgMCk7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChob3N0bmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmds
ZXRvbigpLmFkZChob3N0bmFtZSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU3ZjhiZDExZjlhZjg4YTY5ZmNiY2Y3N2JmYTg5NzRkNGUwNDczZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCisj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPENG
TmV0d29yay9DRk5ldHdvcmsuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Zv
aWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3Jr
Q29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7CisgICAgaWYgKCFwcm94eVNldHRpbmdzKSB7Cisg
ICAgICAgIG1faXNVc2luZ1Byb3h5ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcs
ICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxl
LmNvbS8iKS5jcmVhdGVDRlVSTCgpOworCisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQ
cm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwu
Z2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
aHR0cHNQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRw
c0NGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisKKyAgICBDRkluZGV4IGh0dHBQ
cm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBQcm94eUFycmF5LmdldCgpKTsKKyAgICBD
RkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXku
Z2V0KCkpOworICAgIGlmIChodHRwUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlBy
b3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwUHJveHlDb3VudCA9IDA7CisgICAgaWYgKGh0dHBz
UHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nh
c3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJh
eS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKKyAgICAg
ICAgaHR0cHNQcm94eUNvdW50ID0gMDsKKworICAgIG1faXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5
Q291bnQgfHwgaHR0cHNQcm94eUNvdW50OworfQorCitzdGF0aWMgdm9pZCBjbGllbnRDYWxsYmFj
ayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3Iq
LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJl
cXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwgc2luZ2xldG9uKCkgZnJvbSBhIHNlY29u
ZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFs
aXplZCBieSBub3cuCisgICAgQ0ZSZWxlYXNlKHRoZUhvc3QpOworfQorCit2b2lkIEROU1Jlc29s
dmVRdWV1ZUNGTmV0OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4g
aG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSkpOworICAgIGlmICghaG9zdCkgeworICAgICAgICBkZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENGSG9zdENsaWVudENv
bnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OworICAgIENGSG9zdFJlZiBsZWFrZWRI
b3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBj
bGllbnRDYWxsYmFjaygpLgorICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxl
YWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7CisjaWYgIVBMQVRGT1JNKFdJTikKKyAgICBDRkhvc3RTY2hlZHVsZVdp
dGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1v
bk1vZGVzKTsKKyNlbHNlCisgICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhy
ZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJl
IGNhbGxlZC4KKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRl
clJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyNlbmRpZgorICAgIENGSG9zdFN0
YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFkZHJlc3NlcywgMCk7Cit9CisK
K3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0
bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29s
dmUoRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQwYzQ5OTI0YWRj
OThhZjg2MzA5ZDBiZGU3NDhjMTQ0MjM5Zjc0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCww
ICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCA6IHB1YmxpYyBETlNSZXNvbHZlUXVl
dWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAg
IHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIq
KSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFs
OworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlND
dXJsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzMWY1OTg0YzBjZThlZmFl
ODk4MWQ5M2EyODMwY2EwNzFjYTBjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3Vy
bC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQot
I2lmIFVTRShDVVJMKQotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxh
dGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIC8qIGhvc3Ru
YW1lICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1
ZXVlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVz
b2x2ZVF1ZXVlQ3VybC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE1NTVkZTQ1MGFmMDdjMWUyYjYzZjRhZDk1
ZTVkMjZhOTEyM2M3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgi
CisKKyNpZiBVU0UoQ1VSTCkKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjp1cGRhdGVJc1VzaW5n
UHJveHkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpy
ZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8gLCBETlNSZXNvbHZlT2JzZXJ2ZXIq
IC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKiAvKiBvYnNl
cnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVR
dWV1ZUN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNv
bHZlUXVldWVDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGEzZjYyM2UwNGM4MmM4YjZjYzU0N2ZkZmViM2Uw
ZjcyNjY0NTJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ3VybCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAg
IEROU1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQg
c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQg
cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVR
dWV1ZVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhYzljMDUzNmE1NjBlNmNlM2QyMjBhYTE1YjlmZDM2
ZDU2OTlmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5oIgorCisjaWYgVVNFKFNPVVApCisK
KyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlICJTb3VwTmV0d29y
a1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gSW5pdGlhbGx5
IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhhdmUgcHJv
eHkgc2V0dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsKK3N0YXRp
YyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKKworc3RhdGljIGJvb2wgZGlkUmVzb2x2
ZVByb3h5KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxl
IHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlz
dCBpcworICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1c2VyIHBy
ZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KKyAgICAvLyByZXNv
bHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMgcmV0dXJu
ZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisgICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRv
IGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdl
IGFyZSBub3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0
aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAgICByZXR1cm4gdXJpcyAmJiAqdXJpcyAm
JiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30KKworc3RhdGljIHZvaWQgZGlkUmVzb2x2
ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGJv
b2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKK3sKKyAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5
X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91dFB0cigp
KSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJt
aW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVzb2x2ZVBy
b3h5KHVyaXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8
IGlzVXNpbmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0
cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQq
IHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJj
ZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0
YSkpOworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjayhH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKK3sK
KyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZp
c1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Cit9CisKK3Zv
aWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAgICBHUmVm
UHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3
b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5v
dXRQdHIoKSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJlc29sdmVyKTsKKworICAgIGdfcHJveHlf
cmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29t
LyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQ
cm94eSk7CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCks
ICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1Vy
aUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQorCitzdGF0aWMgdm9pZCByZXNvbHZlZENh
bGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cit9CisKK3N0YXRpYyB2b2lk
IHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFkZHJlc3MsIGd1aW50
IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVTX09L
KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgYXV0byogb2JzZXJ2
ZXIgPSBzdGF0aWNfY2FzdDxETlNSZXNvbHZlT2JzZXJ2ZXIqPihkYXRhKTsKKworICAgIFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSgxKTsKKworICAgIGlmICghc291cF9hZGRyZXNzX2lzX3Jlc29sdmVkKGFk
ZHJlc3MpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgbGVuOworICAgIGF1dG8qIGlwYWRk
cmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oc291cF9h
ZGRyZXNzX2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgYWRkcmVzc2VzLnVuY2hl
Y2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBhZGRyZXNzKSk7CisKKyAgICBvYnNlcnZl
ci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6
cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3
b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIG51bGxw
dHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1
ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVy
KiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBh
ZGRyZXNzID0gYWRvcHRHUmVmKHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEo
KSwgMCkpOworICAgIGF1dG8gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9u
ZXcoKSk7CisgICAgc291cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291
cF9zZXNzaW9uX2dldF9hc3luY19jb250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24o
KS5zb3VwU2Vzc2lvbigpKSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVy
Q2FsbGJhY2ssIG9ic2VydmVyKTsKKworICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlci0+Z2V0
SWQoKSwgV1RGTW92ZShjYW5jZWxsYWJsZSkpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnN0b3BSZXNvbHZlKEROU1Jlc29sdmVPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChhdXRvIGNhbmNlbGxhYmxlID0gbV9vYnNl
cnZlcnMudGFrZShvYnNlcnZlci0+Z2V0SWQoKSkpCisgICAgICAgIGdfY2FuY2VsbGFibGVfY2Fu
Y2VsKGNhbmNlbGxhYmxlLmdldCgpKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291
cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU3ZDFmZWYwN2YxN2IxMTVjYzhhY2ViNGMwNmQ1MDA1YjljZGQ1OWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
RE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xp
Yi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1
ZXVlU291cCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29s
dmVRdWV1ZVNvdXAoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29s
dmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVw
ZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgR1Jl
ZlB0cjxHQ2FuY2VsbGFibGU+PiBtX29ic2VydmVyczsKK307CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZmOGY2Mzk1MC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIElnYWxpYSBTLkwu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0jaW5jbHVkZSA8
bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3
dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3VyZSBwcmVmZXRj
aCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgotc3RhdGljIGJv
b2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cHNQcm94
eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiogdXJpcykKLXsK
LSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVzZSBmb3IgdGhl
IFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBkaXJlY3Q6Ly8g
KHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1c2UgYSBwcm94
eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1lczogdGhlcmUg
Y291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9mIHByZWZlcmVu
Y2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNob3VsZCBhdHRl
bXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWluZwotICAgIC8v
IHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJzaG91bGQiIGJl
IHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlzLCAiZGlyZWN0
Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlSZXNvbHZlciog
cmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJveHlUeXBlLCBi
b29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwot
ICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfZmluaXNo
KHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChlcnJvcikgewot
ICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBwcm94eSBzZXR0
aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgpKTsKLSAgICAq
aXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQcm94eTsKLX0K
LQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhHT2JqZWN0KiBz
b3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBkaWRS
ZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0
cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3RhdGljIHZvaWQg
cHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNS
ZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdf
UFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJveHksIHN0YXRp
Y19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBk
YXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZl
cjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCks
ICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgQVNT
RVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29s
dmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRG
b3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94eV9yZXNvbHZl
cl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51
bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkp
OwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQs
IHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVx
dWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
Ci0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291
cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxs
YmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xl
dG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
CmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIuLjNmZjU4NGM1
MWQzOTc0NTQyNTZkMTY1MWNjMmFhM2E3ZmMxYWUyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApA
QCAtNDAsOCArNDAsMTggQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAi
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorI2lmIFBMQVRGT1JNKENPQ09BKQordXNpbmcgTmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0g
PSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTsKKyNlbHNlCit1c2luZyBOZXR3b3JrUlRDUmVzb2x2
ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlcjsKKyNlbmRpZgorCiBzdGF0aWMgaW5saW5l
IHN0ZDo6dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkKIHsKICAgICBhdXRv
IHRocmVhZCA9IHJ0Yzo6VGhyZWFkOjpDcmVhdGVXaXRoU29ja2V0U2VydmVyKCk7CkBAIC0xNjQs
MTMgKzE3NCwyMSBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6ZGlkUmVjZWl2ZU5ldHdvcmtS
VENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubgogCiB2b2lkIE5ldHdvcmtSVENQ
cm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRk
cmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byByZXNvbHZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jlc29sdmVyUGxhdGZvcm0+KGlkZW50aWZpZXIsIFt0
aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6
OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlk
ZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fY29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRS
ZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKyAgICAgICAgYXV0
byYgcGxhdGZvcm1BZGRyZXNzZXMgPSByZXN1bHQudmFsdWUoKS5nZXQoKTsKKyAgICAgICAgc2l6
ZV90IGNvdW50ID0gcGxhdGZvcm1BZGRyZXNzZXMuc2l6ZSgpOworICAgICAgICBWZWN0b3I8V2Vi
S2l0OjpSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICAgICAgYWRkcmVzc2Vz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgIGZvciAoYXV0byBhZGRy
ZXNzIDogcGxhdGZvcm1BZGRyZXNzZXMpCisgICAgICAgICAgICBhZGRyZXNzZXMudW5jaGVja2Vk
QXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRkcmVzcyhhZGRyZXNzLmdldCgp
LT5zaW5fYWRkcikpKTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3Nlcyks
IGlkZW50aWZpZXIpOwogICAgIH0pOwogICAgIHJlc29sdmVyLT5zdGFydChhZGRyZXNzKTsKICAg
ICBtX3Jlc29sdmVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShyZXNvbHZlcikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHAKaW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3MzExZjllNWNiMTZjM2ZmMDE2
ZS4uYTEzYjlmOTY5NzNmODdhNGFjZjJjMzQxMzc1MzczM2U3NWQ4ZjM2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwCkBAIC0zMiw2OCArMzIsMzIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUg
dHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQotewotICAg
IEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRv
bWFpbikgewotICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGlu
Zm8gaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0
PE5ldHdvcmtSVENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAg
Q0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJl
c3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7Ci0KLSAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNz
ZXMpOwotICAgIFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBh
ZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVm
IGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNz
ZXMsIGluZGV4KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAg
IGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBB
ZGRyZXNzKGFkZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxl
dGVkKGFkZHJlc3Nlcyk7Ci19Ci0KLU5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29s
dmVyKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgOiBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorTmV0d29ya1JUQ1Jlc29s
dmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
IHsKIH0KIAogTmV0d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKCkKIHsKLSAg
ICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRD
dXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1f
aG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6VW5rbm93bikpOwogfQogCi12b2lkIE5ldHdv
cmtSVENSZXNvbHZlcjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQordm9pZCBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYg
YWRkcmVzc2VzKQogewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0g
ICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyIH07Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2
ZWROYW1lLCAmY29udGV4dCk7Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3Qu
Z2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAg
ICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgp
LCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21w
bGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0p
OwogfQogCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCit2b2lkIE5ldHdvcmtSVENS
ZXNvbHZlcjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIENGSG9zdENhbmNl
bEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRy
ZXNzZXMpOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBs
ZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
RXJyb3I6OkNhbmNlbGxlZCkpOworICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgdGhp
cyk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9y
PFJUQ05ldHdvcms6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKK3ZvaWQgTmV0d29ya1JUQ1Jlc29s
dmVyOjpzdG9wKCkKIHsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
bV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVz
c2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKHRoaXMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5
N2NkYThjNzIzYmRlMzVlNzI3OC4uODI0YThmYmZmZmNkZjQ4NjcwN2RhNTM0MjkxNjI4NTgxYTg0
NjllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKQEAgLTI4LDMwICsyOCwzMSBAQAogI2lmIFVTRShMSUJX
RUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
SG9zdC5oPgorI2luY2x1ZGUgIldlYkNvcmUvRE5TLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1jbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgeworY2xhc3MgTmV0d29ya1JU
Q1Jlc29sdmVyIDogcHVibGljIFdlYkNvcmU6OkROU1Jlc29sdmVPYnNlcnZlciB7CiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBFcnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9OwogCi0gICAgdXNp
bmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29u
c3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47CisgICAgdXNpbmcgQWRk
cmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVj
dG9yPFdlYkNvcmU6OklQQWRkcmVzcz4+LCBFcnJvcj47CiAgICAgdXNpbmcgQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47
CiAKLSAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7
Ci0gICAgfk5ldHdvcmtSVENSZXNvbHZlcigpOworICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNv
bHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2aXJ0
dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5n
JiBhZGRyZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29u
c3QgU3RyaW5nJiBhZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9p
ZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKKyAgICB2
b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiYpIGZpbmFsOwor
ICAgIHVpbnQ2NF90IGdldElkKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9OwogCi1w
cml2YXRlOgorcHJvdGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBDb21w
bGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RS
ZWY+IG1faG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkZmQ2MzFjYzdiYjQwMTFmYzZiOTk0YmEyYTlmNGRk
NDg1ZjAzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3Rl
ZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENG
SG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1F
cnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywg
IXR5cGVJbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJWE1F
OiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhl
IGNhbGxiYWNrLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGluZm8pOwor
ICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eq
PihpbmZvKTsKKworICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRB
ZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1
bHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNv
dW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY291bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNv
dW50OyArK2luZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1
dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+
KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBw
ZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29sdmVyLT5j
b21wbGV0ZWQoYWRkcmVzc2VzKTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdv
cmtSVENSZXNvbHZlckNvY29hKHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmll
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNvbHZl
ckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2NoZWR1
bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVu
TG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxs
cHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQo
Y29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3Jl
YXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygp
LmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5n
ZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVu
TG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1
bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24o
bV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6
c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBD
Rkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5N2JiMzEwODVhNjU2NmZlM2MwZDNhYzMxYWFhMmFi
MzRmMDJhMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJO
ZXR3b3JrUlRDUmVzb2x2ZXIuaCIKKworI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIDogcHVi
bGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EodWludDY0X3QgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0
KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1H
VEsuY21ha2UKaW5kZXggNTM2MWFjY2Y4MjM2OTFjMzU3ZDhlMTMzMWZkNDE1OTJjMzlkODE2NC4u
NWI2MGMzZGRlNmZjMWFhMjExYzU3NDc0NGMyODU4MGIwYmVkZGQ3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC00OCw2ICs0OCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAg
ICAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiAgICAgTmV0d29y
a1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKKyAgICBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorCiAgICAgUGxhdGZvcm0v
SVBDL2dsaWIvR1NvY2tldE1vbml0b3IuY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNo
bWVudFVuaXguY3BwCiAgICAgUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
MzlmZDZhN2U5OTAyZTY0MzU3MjkwNjg5YTFkM2RlMDJlNGI0MWIxLi42MGFkMWRmZDY2YjJkMWM5
ODk3ZTQ3ODI4ZDRiNzk3Mjg4MjM0ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMCw2ICs5MTAsNyBAQAogCQk0MTA0ODJDRDFE
REQzMjRDMDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0
d29yay5jcHAgKi87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3Jr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJD
QzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBF
QTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYg
LyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8q
IExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmgg
Ki87IH07CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4
MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1
QUExREU4NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjY5LDYgKzMyNzAsOCBAQAog
CQk0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUg
LyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE5ldHdvcmtSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFG
OUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0
d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdv
cmtSVENTb2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JU
Q1NvY2tldC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDQsNiArNjIwNyw4IEBACiAJCQkJ
NDFEQzQ1OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5p
biAqLywKIAkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcCAqLywKIAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmggKi8sCisJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcCAqLywKKwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8q
IE5ldHdvcmtSVENTb2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5tZXNzYWdlcy5pbiAqLywKQEAgLTEwNTM2LDYgKzEwNTQxLDcgQEAK
IAkJCQk0MURDNDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRD
UHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUx
RkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdv
cmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMy
ODFEIC8qIE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM4MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2lu
dC5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333678</attachid>
            <date>2018-02-13 01:40:31 -0800</date>
            <delta_ts>2018-02-13 03:51:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180213104029.patch</filename>
            <type>text/plain</type>
            <size>75128</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMzhhZmM2MTY5OTA1ZGNiYzg0YmE1M2Q1MmFiZjAx
NTRiNDQ1MTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0xMiAgQ2hyaXMgRmxlaXphY2ggIDxj
ZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBkZWZlciBmb2N1c2VkVUlFbGVtZW50
IG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODQxZDgyNjE3YjVmOGUxOWRlYjIwZGQ0ZGQyYzZj
ODg5ZWU5NGM0Zi4uMThmZDdlNDNlMGM5ZWNhMWUzYWY1MmFjODJjOWEwZWZhMGI5MGVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wMi0wOCAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtSVENSZXNvbHZlciBwb3J0
IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzg4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgYW4gc3BlY2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0ZSB0aGUgZ2VuZXJpYyBj
b2RlIGluIHRoZSBiYXNlIGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHBvcnQK
KyAgICAgICAgYWdub3N0aWMgYW5kIGRlcGVuZGVudCBvbiBETlMgQVBJIGluIHRoZSBwbGF0Zm9y
bSBkaXJlY3Rvcnkgd2hpY2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRh
aWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rvci4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
OiBDcmVhdGUgYW4gYWxpYXMgY2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0
YW50aWF0ZSB0aGUgcmVzb2x2ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRl
cjo6Y3JlYXRlUmVzb2x2ZXIpOiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZl
IGEgbmV3IElQQWRkcmVzcyBjbGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24g
cnRjIGxpYndlYnJ0YyBsaWJyYXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUu
IFVzZSB0aGUgRE5TIEFQSSB0byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgaW4gdGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBp
ZGVudGlmaWVyIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRo
ZSBpZGVudGlmaWVyIGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9y
bSBzcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNv
bXBsZXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
YXJ0KTogQWRkIGEgbmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5l
cmFsCisgICAgICAgIHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMg
Y29kZS4gQXZvaWQgdXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGli
d2VydGMgY2xhc3NlcyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcg
RE5TIG5hbWUgcmVzb2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVy
OjpzdGFydCk6IE1ha2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAuCisgICAgICAgIE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3Ag
bWV0aG9kcyB0aGF0IHVzZSBETlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhl
IEROUyBtZXRob2RzIGluIHRoZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNz
LCBtYWtpbmcgc3VyZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBw
bGF0Zm9ybSBkaXJlY3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9y
IEdUSy4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRo
ZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIw
MTgtMDItMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50
IGJhc2VkIG9uIHJlZGlyZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3
ZmZjZjJjOGQ3OGVkMGVjLi4yYzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVKYXJDRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3Bw
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1
bkxvb3BDRi5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1
NzNjNmJkNTNhYmM0ODcwMTNhNDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4
YWYzODc4MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU0NGTmV0LmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAyZTUzZjBhOWE4Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1
MDY2M2ExZTQ1NTI4Yjc1OTYxODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcw
NSw2ICsxNzA1LDcgQEAgcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0Nvb2tpZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2Uu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0
d29yay9ETlMuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZk
NjFlZmRjODM4ZTkwOTlhMS4uMjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcAorcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMz
ZDY1NTVjMGFjMDI5NS4uOWYyMTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE5OSw2ICsyMTk5LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1
IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNG
ZXRjaEJvZHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRD
OTZERDFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2
NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcg
QEAKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
c291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VF
Njg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNv
bHZlUXVldWVDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNv
bHZlUXVldWVDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRh
YmxlU3RyZWFtU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MjA0OCw4ICsxMjA1MCw5IEBACiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29t
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMg
LyogU1ZHWm9vbUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3
RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBETlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJG
MzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAw
MEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZH
QW5pbWF0ZUNvbG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyRkEzQzUwMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJ
NTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJ
RTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlF
NEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4
RTEzMjEyNTY1QTQ0NDUyMzBGRjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0
MDBGNjI3Q0QgLyogRE5TLmggKi8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIERO
U1Jlc29sdmVRdWV1ZS5jcHAgKi8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIERO
U1Jlc29sdmVRdWV1ZS5oICovLApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5m
by5oICovLAotCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8s
CisJCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNw
cCAqLywKKwkJCQk3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuaCAqLywKIAkJCQk3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuaCAqLywKIAkJCQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZE
MzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1
bWVudEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4
MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DdXJsLmNtYWtlCmluZGV4IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2
NmYuLmUzY2M5MDhjZGZhYWFlN2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIu
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRE5TQ3VybC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2
ZVF1ZXVlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJs
LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcy
MjZlZWQ5NDcxYjNkMzI4NmMxYjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZl
YTYwYjk1ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0y
Nyw3ICsyNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llU3RvcmFnZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0
b3JhZ2VTb3VwLmNwcAotcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
c291cC9HUmVmUHRyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDUy
OTUwMGJmMTViZGM0NzRmNGFkM2MwMWI3YmZjOGE4NTc0MDI1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgi
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9
CisKK3ZvaWQgcmVzb2x2ZUROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYg
KGhvc3RuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5yZXNvbHZlKGhvc3RuYW1lLCBvYnNlcnZlcik7Cit9
CisKK3ZvaWQgc3RvcFJlc29sdmVETlMoRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sK
KyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnN0b3BSZXNvbHZlKG9i
c2VydmVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKaW5kZXgg
MjkwZjQwNjM0Yzg1ODhiZDFlM2IyZTZkN2RjMDNjNTM3MTc1ZTYyYy4uYjI5MjJjMDFiNWZiNTMx
NjA1YzRkOTZjZDE1YjU0ZDc3MWJkNGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROUy5oCkBAIC0yMywxNCArMjMsNDEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBETlNfaAotI2RlZmluZSBETlNfaAorI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisjaW5jbHVkZSA8bmV0aW5ldC9p
bi5oPgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYK
IAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVBBZGRyZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJUEFk
ZHJlc3MoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAg
ICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKiBnZXQoKSB7IHJldHVybiAmbV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAgIHN0
cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJlc3M7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBE
TlNSZXNvbHZlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkROU1Jlc29sdmVPYnNl
cnZlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3Rv
cjxJUEFkZHJlc3M+JikgeyB9OworICAgIHZpcnR1YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7Cit9
OworCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpOwotfQorV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUmVz
b2x2ZUROUyhETlNSZXNvbHZlT2JzZXJ2ZXIqKTsKIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThj
MmRmNDBjM2JmYmFjNWY1YzM5MjliY2EzMzkzMDBmMGEwMjYxOC4uNTE1ZWY2NWQzYzRhMTEwNzg2
MmUxNWFjMWVkMTU2Y2VmZmIyNjAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0Uo
U09VUCkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ0YpCisj
aW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKyNlbGlmIFVTRShDVVJMKQorI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVTb3VwOworI2VsaWYgVVNFKENGKQordXNpbmcgRE5TUmVzb2x2ZVF1
ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKyNlbGlmIFVTRShDVVJMKQordXNp
bmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVDdXJsOworI2VuZGlm
CisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0
aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZl
dGNoIGlzIHRyaWdnZXJlZCBieSBob3ZlcmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2lu
Zywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Np
bmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIuCiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2
ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUyLDE1ICs2OCwxNSBAQCBzdGF0aWMgY29uc3QgU2Vjb25k
cyByZXNvbHZpbmdSZXRyeURlbGF5IHsgMTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5T
UmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxE
TlNSZXNvbHZlUXVldWU+IHF1ZXVlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNv
bHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7CiAKICAgICByZXR1cm4gcXVldWU7CiB9CiAKIEROU1Jl
c29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKLSAgICA6IG1fdGltZXIoKnRoaXMsICZETlNS
ZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCisgICAgOiBtX2lzVXNpbmdQcm94eSh0cnVlKQorICAg
ICwgbV90aW1lcigqdGhpcywgJkROU1Jlc29sdmVRdWV1ZTo6dGltZXJGaXJlZCkKICAgICAsIG1f
cmVxdWVzdHNJbkZsaWdodCgwKQotICAgICwgbV9pc1VzaW5nUHJveHkodHJ1ZSkKICAgICAsIG1f
bGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZSgwKQogewogICAgIC8vIGlzVXNpbmdQcm94
eSB3aWxsIHJldHVybiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJz
dCBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNjNDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uNDkw
ZDcyNTE3Nzg3ZjJkZThmYzU5YTBhZTg5ODY5N2UzMDAyMGQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaWZuZGVmIEROU1Jlc29sdmVRdWV1ZV9oCiAjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9o
CiAKKyNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21p
Yz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzksMjkgKzQwLDMzIEBAIGNsYXNzIERO
U1Jlc29sdmVRdWV1ZSB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1
ZT47CiAKIHB1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNS
ZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBz
aW5nbGV0b24oKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJl
c29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgPSAwOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CiAg
ICAgICAgIC0tbV9yZXF1ZXN0c0luRmxpZ2h0OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBETlNS
ZXNvbHZlUXVldWUoKTsKLQorcHJvdGVjdGVkOgogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAK
LSAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpOwotICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZl
KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgbV9pc1VzaW5nUHJveHk7CiAKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2b2lkIHRpbWVyRmly
ZWQoKTsKIAogICAgIFRpbWVyIG1fdGltZXI7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1l
czsKICAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fcmVxdWVzdHNJbkZsaWdodDsKLSAgICBib29sIG1f
aXNVc2luZ1Byb3h5OwogICAgIGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1Rp
bWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZO
ZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAw
MmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMu
aCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYg
UExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1
ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewot
ICAgICAgICBtX2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBs
ZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
UHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJM
LmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0
cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRw
UHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAg
Q0ZJbmRleCBodHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5
LmdldCgpKTsKLSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlv
bmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQ
cm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRw
c1Byb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJy
YXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAg
ICAgIGh0dHBzUHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94
eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJh
Y2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9y
Kiwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRS
ZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNv
bmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlh
bGl6ZWQgYnkgbm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNv
bHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0
ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4
dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3Qg
PSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVu
dENhbGxiYWNrKCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2Vk
SG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1
bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpOwotI2Vsc2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQg
d2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2Fs
bGVkLgotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVu
TG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJ
bmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9p
ZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTdmOGJkMTFmOWFmODhhNjlmY2Jj
Zjc3YmZhODk3NGQ0ZTA0NzNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdl
YmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8
fCBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBk
YXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94
eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsK
KyAgICBpZiAoIXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0
cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVh
dGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJz
ZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENG
TmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3Mu
Z2V0KCkpKTsKKworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQo
aHR0cFByb3h5QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZB
cnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNv
dW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQ
cm94eUNvdW50ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChD
RkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtl
eSksIGtDRlByb3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisg
ICAgbV9pc1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9
CisKK3N0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJ
bmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVR
dWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8g
Y2FsbCBzaW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJp
YWJsZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2Uo
dGhlSG9zdCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFo
b3N0KSB7CisgICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07CisgICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZP
Uk0oV0lOKQorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5M
b29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBX
aW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlz
IHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOworI2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6
cmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovICwgRE5TUmVzb2x2ZU9ic2VydmVy
KiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9i
c2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNDBjNDk5MjRhZGM5OGFmODYzMDlkMGJkZTc0OGMxNDQyMzlmNzQz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1
ZUNGTmV0IDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29s
dmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVw
ZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2
ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAv
KiBob3N0bmFtZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYTU1NWRlNDUwYWYwN2MxZTJiNjNmNGFkOTVlNWQyNmE5MTIzYzc0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1
ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jl
c29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0
bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2
ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YTNmNjIzZTA0YzgyYzhiNmNjNTQ3ZmRmZWIzZTBmNzI2NjQ1MmUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIERO
U1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVm
YXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2
ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2
ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkg
ZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JikgZmluYWw7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFj
OWMwNTM2YTU2MGU2Y2UzZDIyMGFhMTViOWZkMzZkNTY5OWZhYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3Vw
LmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVl
dWVTb3VwLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBJbml0aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3Rh
eXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2ZSBwcm94eSBzZXR0aW5ncy4KK3N0YXRpYyBib29sIGlz
VXNpbmdIdHRwUHJveHkgPSB0cnVlOworc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0
cnVlOworCitzdGF0aWMgYm9vbCBkaWRSZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCit7CisgICAg
Ly8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9zc2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkku
IElmIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0IGlzCisgICAgLy8gZGlyZWN0Oi8vICh0aGUg
dXN1YWwgY2FzZSksIHRoZW4gdGhlIHVzZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRo
aXMgaXMgc2ltaWxhciB0bworICAgIC8vIHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxk
IGJlIG1hbnkgcG9zc2liaWxpdGllcyByZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBh
bmQKKyAgICAvLyBpZiB3ZSdyZSB0cnlpbmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBl
YWNoIG9uZSBpbiBvcmRlciwgYnV0IGhlcmUgd2UgYXJlIG5vdCB0cnlpbmcKKyAgICAvLyB0byBj
b25uZWN0LCBtZXJlbHkgdG8gZGVjaWRlIHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2Vk
LgorICAgIHJldHVybiB1cmlzICYmICp1cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIp
OworfQorCitzdGF0aWMgdm9pZCBkaWRSZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29s
dmVyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCog
aXNVc2luZ1Byb3h5KQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
VW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNv
bHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJFcnJvciBkZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6
ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKmlz
VXNpbmdQcm94eVR5cGUgPSBkaWRSZXNvbHZlUHJveHkodXJpcy5nZXQoKSk7CisgICAgKmlzVXNp
bmdQcm94eSA9IGlzVXNpbmdIdHRwUHJveHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Cit9CisKK3N0
YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94
eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5
UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZ
X1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2Fz
dDxib29sKj4odXNlckRhdGEpKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjp1cGRh
dGVJc1VzaW5nUHJveHkoKQoreworICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVy
OworICAgIGdfb2JqZWN0X2dldChOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
InByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBBU1NF
UlQocmVzb2x2ZXIpOworCisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2
ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZv
ckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKKyAgICBnX3Byb3h5X3Jlc29sdmVy
X2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVs
bHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7
Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwg
dm9pZCopCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFj
ayhTb3VwQWRkcmVzcyogYWRkcmVzcywgZ3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAg
IGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChkYXRhKTsKKyAgICBhdXRvKiBvYnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVP
YnNlcnZlcio+KGRhdGEpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVz
c2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYg
KCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGludCBsZW47CisgICAgYXV0byogaXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihzb3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3Ms
ICZsZW4pKTsKKyAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVz
cyhpcGFkZHJlc3MpKTsKKworICAgIG9ic2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc291cF9z
ZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
aG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0
cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRy
ZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJs
ZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVz
b2x2ZV9hc3luYyhhZGRyZXNzLmdldCgpLCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5n
ZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJs
ZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAg
bV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyLT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9i
c2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgp
KSkKKyAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdkMWZlZjA3ZjE3
YjExNWNjOGFjZWI0YzA2ZDUwMDViOWNkZDU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVR
dWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAg
ICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVy
KikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2
ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3ZGRkMjIz
M2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYzOTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKFNP
VVApCi0KLSNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJTb3Vw
TmV0d29ya1Nlc3Npb24uaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSW5p
dGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhh
dmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsK
LXN0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJvb2wgZGlk
UmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBv
c3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgbGlzdCBpcwotICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1
c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KLSAgICAv
LyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMg
cmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2UncmUgdHJ5
aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBo
ZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0gICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lk
ZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJpcyAmJiAq
dXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZvaWQgZGlk
UmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsKLSAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhn
X3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Ig
ZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVz
b2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwotICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFBy
b3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVk
Rm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IHZvaWQqIHVzZXJEYXRhKQotewotICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVS
KHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1
c2VyRGF0YSkpOwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxs
YmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0
YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1
bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIEdS
ZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOwotICAgIGdfb2JqZWN0X2dldChOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5l
dHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVy
Lm91dFB0cigpLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5j
b20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2lu
Z1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQo
KSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBz
VXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc29sdmVk
Q2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1
ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9pZCBETlNS
ZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hf
ZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JD
cmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQotdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYy
YTE0MDdjMGYwYmNjZjIzNzIxMi4uM2ZmNTg0YzUxZDM5NzQ1NDI1NmQxNjUxY2MyYWEzYTdmYzFh
ZTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC00MCw4ICs0MCwxOCBAQAogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2lu
ZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hOwor
I2Vsc2UKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29s
dmVyOworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFk
PiBjcmVhdGVUaHJlYWQoKQogewogICAgIGF1dG8gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0
ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsKQEAgLTE2NCwxMyArMTc0LDIxIEBAIHZvaWQgTmV0d29ya1JU
Q1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uCiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgYXV0byByZXNv
bHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jlc29sdmVyPihbdGhpcywgaWRlbnRp
Zmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVz
b2x2ZXJQbGF0Zm9ybT4oaWRlbnRpZmllciwgW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENS
ZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkg
IT0gTmV0d29ya1JUQ1Jlc29sdmVyOjpFcnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVy
OjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhyZXN1bHQudmFsdWUo
KSksIGlkZW50aWZpZXIpOworICAgICAgICBhdXRvJiBwbGF0Zm9ybUFkZHJlc3NlcyA9IHJlc3Vs
dC52YWx1ZSgpLmdldCgpOworICAgICAgICBzaXplX3QgY291bnQgPSBwbGF0Zm9ybUFkZHJlc3Nl
cy5zaXplKCk7CisgICAgICAgIFZlY3RvcjxXZWJLaXQ6OlJUQ05ldHdvcms6OklQQWRkcmVzcz4g
YWRkcmVzc2VzOworICAgICAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3Vu
dCk7CisKKyAgICAgICAgZm9yIChhdXRvIGFkZHJlc3MgOiBwbGF0Zm9ybUFkZHJlc3NlcykKKyAg
ICAgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNz
KHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3MuZ2V0KCktPnNpbl9hZGRyKSkpOworCisgICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAgICAg
cmVzb2x2ZXItPnN0YXJ0KGFkZHJlc3MpOwogICAgIG1fcmVzb2x2ZXJzLmFkZChpZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc29sdmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4
MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi5hMTNiOWY5Njk3M2Y4N2E0YWNmMmMzNDEz
NzUzNzMzZTc1ZDhmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKQEAgLTMyLDY4ICszMiwzMiBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9z
dFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJv
ciAqZXJyb3IsIHZvaWQgKmluZm8pCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5
cGVJbmZvKTsKLQotICAgIGlmIChlcnJvci0+ZG9tYWluKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNh
bGxiYWNrLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGluZm8pOwotICAg
IGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyKj4oaW5mbyk7
Ci0KLSAgICBCb29sZWFuIHJlc3VsdDsKLSAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2Vz
ID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLQotICAgIHNpemVfdCBjb3VudCA9IENG
QXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7Ci0gICAgVmVjdG9yPFJUQ05ldHdvcms6
OklQQWRkcmVzcz4gYWRkcmVzc2VzOwotICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNvdW50KTsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsg
KytpbmRleCkgewotICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBhdXRvKiBh
ZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRh
dGFHZXRCeXRlUHRyKGRhdGEpKTsKLSAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChS
VENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy0+c2luX2FkZHIpKSk7
Ci0gICAgfQotICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKLX0KLQotTmV0d29y
a1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKLSAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpCitOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewogfQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6
On5OZXR3b3JrUlRDUmVzb2x2ZXIoKQogewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9v
cChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRN
b2RlKTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRy
KTsKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9y
OjpVbmtub3duKSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBT
dHJpbmcmIGFkZHJlc3MpCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCiB7Ci0gICAgbV9ob3N0ID0g
YWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNz
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRl
eHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhvc3RT
ZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBDRkhv
c3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgp
LCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3Rh
cnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29s
dmVyOjpzdG9wKCkKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcm
IGFkZHJlc3MpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgp
LCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7CisgICAgV2Vi
Q29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCB0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVz
b2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRk
cmVzc2VzKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQogewotICAgIGlmIChhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CisgICAgV2ViQ29yZTo6c3RvcFJl
c29sdmVETlModGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li44MjRhOGZi
ZmZmY2RmNDg2NzA3ZGE1MzQyOTE2Mjg1ODFhODQ2OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAt
MjgsMzAgKzI4LDMxIEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdv
cmsuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisjaW5jbHVkZSAiV2ViQ29yZS9E
TlMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtS
VENSZXNvbHZlciB7CitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6
RE5TUmVzb2x2ZU9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5r
bm93biwgQ2FuY2VsbGVkIH07CiAKLSAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0
ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRy
ZXNzPj4sIEVycm9yPjsKKyAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPj4sIEVy
cm9yPjsKICAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBZGRyZXNzZXNPckVycm9yJiYpPjsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwog
Ci0gICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgp
OworICAgIHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOworICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCk7CiAKLSAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRD
TmV0d29yazo6SVBBZGRyZXNzPiYpOworICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+JikgZmluYWw7CisgICAgdWludDY0X3QgZ2V0SWQoKSBmaW5hbCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH07CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CisgICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhh
bmRsZXI7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Rm
ZDYzMWNjN2JiNDAxMWZjNmI5OTRiYTJhOWY0ZGQ0ODVmMDMwMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VC
UlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9U
eXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgaWYgKGVycm9y
LT5kb21haW4pIHsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1
dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNf
Y2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSo+KGluZm8pOworCisgICAgQm9vbGVhbiByZXN1
bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9z
dEdldEFkZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7CisKKyAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2
ZWRBZGRyZXNzZXMpOworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsK
KyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZE
YXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRB
ZGRyZXNzZXMsIGluZGV4KTsKKyAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Cisg
ICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGFkZHJl
c3MpKTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCitO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3Qg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6
IE5ldHdvcmtSVENSZXNvbHZlcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKK3sKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6On5OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSgpCit7CisgICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwg
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIENGSG9z
dFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7Cisg
ICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBDRkhvc3RDbGllbnRD
b250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsK
KyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0
KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIEJvb2xlYW4gcmVzdWx0
ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNz
ZXMsIG51bGxwdHIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2
b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdG9wKCkKK3sKKyAgICBDRkhvc3RDYW5jZWxJ
bmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVz
c2VzKTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0
aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVy
cm9yOjpDYW5jZWxsZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3
YmIzMTA4NWE2NTY2ZmUzYzBkM2FjMzFhYWEyYWIzNGYwMmExMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
VVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgOiBwdWJsaWMgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EoKSBmaW5hbDsKKworICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZI
b3N0UmVmPiBtX2hvc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA2NzA1NWJkN2IzYzNkNGUzZDY1
YTM1ZDdjYzFlODE2Zjg1YTQyMzM3Li4wZjI2M2U5NDJkNTIxY2IzOTE4NDAwYmUzYjI2NzUwYjU0
N2Q1MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTM5LDYgKzM5LDggQEAgTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHRTb3VwLmNwcAogCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcAorCiBQbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5jcHAgQG5vLXVuaWZ5CiBQ
bGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjdlNTZhNGVmMDIzMWQ1Mzgx
NjEwMTk2MDdkMDgyMzU5MTg0YWZlLi5mZDMzNGZmNzgwYTA4NDUwNjhjZjJlYTA0YmViZTU5NjJm
NmFhNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTkxMiw2ICs5MTIsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyog
UlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJ
CTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAg
LyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYy
MUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5
MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5
IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9u
aXRvci5jcHAgKi87IH07CkBAIC0zMjczLDYgKzMyNzQsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5
RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZl
ci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyog
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0
NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYyMDgsNiArNjIxMSw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAw
QjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0
NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEy
QjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywK
KwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
aCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5j
cHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
aCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5t
ZXNzYWdlcy5pbiAqLywKQEAgLTEwNTQzLDYgKzEwNTQ4LDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2
RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8q
IE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBF
QTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENT
b2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0
QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICov
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333680</attachid>
            <date>2018-02-13 03:51:54 -0800</date>
            <delta_ts>2018-02-13 04:11:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180213125153.patch</filename>
            <type>text/plain</type>
            <size>75128</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMzhhZmM2MTY5OTA1ZGNiYzg0YmE1M2Q1MmFiZjAx
NTRiNDQ1MTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0xMiAgQ2hyaXMgRmxlaXphY2ggIDxj
ZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBkZWZlciBmb2N1c2VkVUlFbGVtZW50
IG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODQxZDgyNjE3YjVmOGUxOWRlYjIwZGQ0ZGQyYzZj
ODg5ZWU5NGM0Zi4uMThmZDdlNDNlMGM5ZWNhMWUzYWY1MmFjODJjOWEwZWZhMGI5MGVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wMi0wOCAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtSVENSZXNvbHZlciBwb3J0
IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzg4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgYW4gc3BlY2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0ZSB0aGUgZ2VuZXJpYyBj
b2RlIGluIHRoZSBiYXNlIGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHBvcnQK
KyAgICAgICAgYWdub3N0aWMgYW5kIGRlcGVuZGVudCBvbiBETlMgQVBJIGluIHRoZSBwbGF0Zm9y
bSBkaXJlY3Rvcnkgd2hpY2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRh
aWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rvci4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
OiBDcmVhdGUgYW4gYWxpYXMgY2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0
YW50aWF0ZSB0aGUgcmVzb2x2ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRl
cjo6Y3JlYXRlUmVzb2x2ZXIpOiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZl
IGEgbmV3IElQQWRkcmVzcyBjbGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24g
cnRjIGxpYndlYnJ0YyBsaWJyYXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUu
IFVzZSB0aGUgRE5TIEFQSSB0byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgaW4gdGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBp
ZGVudGlmaWVyIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRo
ZSBpZGVudGlmaWVyIGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9y
bSBzcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNv
bXBsZXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
YXJ0KTogQWRkIGEgbmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5l
cmFsCisgICAgICAgIHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMg
Y29kZS4gQXZvaWQgdXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGli
d2VydGMgY2xhc3NlcyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcg
RE5TIG5hbWUgcmVzb2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVy
OjpzdGFydCk6IE1ha2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAuCisgICAgICAgIE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3Ag
bWV0aG9kcyB0aGF0IHVzZSBETlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhl
IEROUyBtZXRob2RzIGluIHRoZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNz
LCBtYWtpbmcgc3VyZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBw
bGF0Zm9ybSBkaXJlY3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9y
IEdUSy4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRo
ZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIw
MTgtMDItMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50
IGJhc2VkIG9uIHJlZGlyZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3
ZmZjZjJjOGQ3OGVkMGVjLi4yYzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVKYXJDRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3Bw
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1
bkxvb3BDRi5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1
NzNjNmJkNTNhYmM0ODcwMTNhNDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4
YWYzODc4MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU0NGTmV0LmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAyZTUzZjBhOWE4Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1
MDY2M2ExZTQ1NTI4Yjc1OTYxODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcw
NSw2ICsxNzA1LDcgQEAgcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0Nvb2tpZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2Uu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0
d29yay9ETlMuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZk
NjFlZmRjODM4ZTkwOTlhMS4uMjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcAorcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMz
ZDY1NTVjMGFjMDI5NS4uOWYyMTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE5OSw2ICsyMTk5LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1
IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNG
ZXRjaEJvZHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRD
OTZERDFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2
NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcg
QEAKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
c291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VF
Njg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNv
bHZlUXVldWVDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNv
bHZlUXVldWVDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRh
YmxlU3RyZWFtU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MjA0OCw4ICsxMjA1MCw5IEBACiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29t
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMg
LyogU1ZHWm9vbUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3
RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBETlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJG
MzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAw
MEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZH
QW5pbWF0ZUNvbG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyRkEzQzUwMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJ
NTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJ
RTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlF
NEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4
RTEzMjEyNTY1QTQ0NDUyMzBGRjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0
MDBGNjI3Q0QgLyogRE5TLmggKi8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIERO
U1Jlc29sdmVRdWV1ZS5jcHAgKi8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIERO
U1Jlc29sdmVRdWV1ZS5oICovLApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5m
by5oICovLAotCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8s
CisJCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNw
cCAqLywKKwkJCQk3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuaCAqLywKIAkJCQk3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuaCAqLywKIAkJCQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZE
MzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1
bWVudEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4
MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DdXJsLmNtYWtlCmluZGV4IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2
NmYuLmUzY2M5MDhjZGZhYWFlN2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIu
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRE5TQ3VybC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2
ZVF1ZXVlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJs
LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcy
MjZlZWQ5NDcxYjNkMzI4NmMxYjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZl
YTYwYjk1ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0y
Nyw3ICsyNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llU3RvcmFnZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0
b3JhZ2VTb3VwLmNwcAotcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
c291cC9HUmVmUHRyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDUy
OTUwMGJmMTViZGM0NzRmNGFkM2MwMWI3YmZjOGE4NTc0MDI1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgi
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9
CisKK3ZvaWQgcmVzb2x2ZUROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYg
KGhvc3RuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5yZXNvbHZlKGhvc3RuYW1lLCBvYnNlcnZlcik7Cit9
CisKK3ZvaWQgc3RvcFJlc29sdmVETlMoRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sK
KyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnN0b3BSZXNvbHZlKG9i
c2VydmVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKaW5kZXgg
MjkwZjQwNjM0Yzg1ODhiZDFlM2IyZTZkN2RjMDNjNTM3MTc1ZTYyYy4uYjI5MjJjMDFiNWZiNTMx
NjA1YzRkOTZjZDE1YjU0ZDc3MWJkNGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROUy5oCkBAIC0yMywxNCArMjMsNDEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBETlNfaAotI2RlZmluZSBETlNfaAorI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisjaW5jbHVkZSA8bmV0aW5ldC9p
bi5oPgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYK
IAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVBBZGRyZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJUEFk
ZHJlc3MoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAg
ICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKiBnZXQoKSB7IHJldHVybiAmbV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAgIHN0
cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJlc3M7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBE
TlNSZXNvbHZlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkROU1Jlc29sdmVPYnNl
cnZlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3Rv
cjxJUEFkZHJlc3M+JikgeyB9OworICAgIHZpcnR1YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7Cit9
OworCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpOwotfQorV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUmVz
b2x2ZUROUyhETlNSZXNvbHZlT2JzZXJ2ZXIqKTsKIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThj
MmRmNDBjM2JmYmFjNWY1YzM5MjliY2EzMzkzMDBmMGEwMjYxOC4uNTQ3MTEwNTcwMzhlYjJjZGRl
NjgxYzdmZTYwZGY3ZjlhNGU1MGUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0Uo
U09VUCkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVTb3VwOworI2VsaWYgVVNFKENVUkwpCit1c2luZyBETlNSZXNvbHZl
UXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1cmw7CisjZWxpZiBVU0UoQ0YpCit1c2lu
ZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0OworI2VuZGlm
CisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0
aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZl
dGNoIGlzIHRyaWdnZXJlZCBieSBob3ZlcmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2lu
Zywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Np
bmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIuCiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2
ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUyLDE1ICs2OCwxNSBAQCBzdGF0aWMgY29uc3QgU2Vjb25k
cyByZXNvbHZpbmdSZXRyeURlbGF5IHsgMTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5T
UmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxE
TlNSZXNvbHZlUXVldWU+IHF1ZXVlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNv
bHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7CiAKICAgICByZXR1cm4gcXVldWU7CiB9CiAKIEROU1Jl
c29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKLSAgICA6IG1fdGltZXIoKnRoaXMsICZETlNS
ZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCisgICAgOiBtX2lzVXNpbmdQcm94eSh0cnVlKQorICAg
ICwgbV90aW1lcigqdGhpcywgJkROU1Jlc29sdmVRdWV1ZTo6dGltZXJGaXJlZCkKICAgICAsIG1f
cmVxdWVzdHNJbkZsaWdodCgwKQotICAgICwgbV9pc1VzaW5nUHJveHkodHJ1ZSkKICAgICAsIG1f
bGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZSgwKQogewogICAgIC8vIGlzVXNpbmdQcm94
eSB3aWxsIHJldHVybiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJz
dCBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNjNDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uNDkw
ZDcyNTE3Nzg3ZjJkZThmYzU5YTBhZTg5ODY5N2UzMDAyMGQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaWZuZGVmIEROU1Jlc29sdmVRdWV1ZV9oCiAjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9o
CiAKKyNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21p
Yz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzksMjkgKzQwLDMzIEBAIGNsYXNzIERO
U1Jlc29sdmVRdWV1ZSB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1
ZT47CiAKIHB1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNS
ZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBz
aW5nbGV0b24oKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJl
c29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgPSAwOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CiAg
ICAgICAgIC0tbV9yZXF1ZXN0c0luRmxpZ2h0OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBETlNS
ZXNvbHZlUXVldWUoKTsKLQorcHJvdGVjdGVkOgogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAK
LSAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpOwotICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZl
KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgbV9pc1VzaW5nUHJveHk7CiAKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2b2lkIHRpbWVyRmly
ZWQoKTsKIAogICAgIFRpbWVyIG1fdGltZXI7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1l
czsKICAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fcmVxdWVzdHNJbkZsaWdodDsKLSAgICBib29sIG1f
aXNVc2luZ1Byb3h5OwogICAgIGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1Rp
bWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZO
ZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAw
MmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMu
aCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYg
UExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1
ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewot
ICAgICAgICBtX2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBs
ZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
UHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJM
LmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0
cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRw
UHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAg
Q0ZJbmRleCBodHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5
LmdldCgpKTsKLSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlv
bmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQ
cm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRw
c1Byb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJy
YXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAg
ICAgIGh0dHBzUHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94
eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJh
Y2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9y
Kiwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRS
ZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNv
bmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlh
bGl6ZWQgYnkgbm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNv
bHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0
ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4
dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3Qg
PSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVu
dENhbGxiYWNrKCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2Vk
SG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1
bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpOwotI2Vsc2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQg
d2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2Fs
bGVkLgotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVu
TG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJ
bmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9p
ZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTdmOGJkMTFmOWFmODhhNjlmY2Jj
Zjc3YmZhODk3NGQ0ZTA0NzNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdl
YmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8
fCBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBk
YXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94
eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsK
KyAgICBpZiAoIXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0
cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVh
dGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJz
ZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENG
TmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3Mu
Z2V0KCkpKTsKKworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQo
aHR0cFByb3h5QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZB
cnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNv
dW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQ
cm94eUNvdW50ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChD
RkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtl
eSksIGtDRlByb3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisg
ICAgbV9pc1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9
CisKK3N0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJ
bmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVR
dWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8g
Y2FsbCBzaW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJp
YWJsZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2Uo
dGhlSG9zdCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFo
b3N0KSB7CisgICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07CisgICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZP
Uk0oV0lOKQorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5M
b29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBX
aW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlz
IHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOworI2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6
cmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovICwgRE5TUmVzb2x2ZU9ic2VydmVy
KiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9i
c2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNDBjNDk5MjRhZGM5OGFmODYzMDlkMGJkZTc0OGMxNDQyMzlmNzQz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1
ZUNGTmV0IDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29s
dmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVw
ZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2
ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAv
KiBob3N0bmFtZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYTU1NWRlNDUwYWYwN2MxZTJiNjNmNGFkOTVlNWQyNmE5MTIzYzc0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1
ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jl
c29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0
bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2
ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YTNmNjIzZTA0YzgyYzhiNmNjNTQ3ZmRmZWIzZTBmNzI2NjQ1MmUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIERO
U1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVm
YXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2
ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2
ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkg
ZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JikgZmluYWw7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFj
OWMwNTM2YTU2MGU2Y2UzZDIyMGFhMTViOWZkMzZkNTY5OWZhYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3Vw
LmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVl
dWVTb3VwLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBJbml0aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3Rh
eXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2ZSBwcm94eSBzZXR0aW5ncy4KK3N0YXRpYyBib29sIGlz
VXNpbmdIdHRwUHJveHkgPSB0cnVlOworc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0
cnVlOworCitzdGF0aWMgYm9vbCBkaWRSZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCit7CisgICAg
Ly8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9zc2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkku
IElmIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0IGlzCisgICAgLy8gZGlyZWN0Oi8vICh0aGUg
dXN1YWwgY2FzZSksIHRoZW4gdGhlIHVzZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRo
aXMgaXMgc2ltaWxhciB0bworICAgIC8vIHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxk
IGJlIG1hbnkgcG9zc2liaWxpdGllcyByZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBh
bmQKKyAgICAvLyBpZiB3ZSdyZSB0cnlpbmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBl
YWNoIG9uZSBpbiBvcmRlciwgYnV0IGhlcmUgd2UgYXJlIG5vdCB0cnlpbmcKKyAgICAvLyB0byBj
b25uZWN0LCBtZXJlbHkgdG8gZGVjaWRlIHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2Vk
LgorICAgIHJldHVybiB1cmlzICYmICp1cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIp
OworfQorCitzdGF0aWMgdm9pZCBkaWRSZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29s
dmVyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCog
aXNVc2luZ1Byb3h5KQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
VW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNv
bHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJFcnJvciBkZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6
ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKmlz
VXNpbmdQcm94eVR5cGUgPSBkaWRSZXNvbHZlUHJveHkodXJpcy5nZXQoKSk7CisgICAgKmlzVXNp
bmdQcm94eSA9IGlzVXNpbmdIdHRwUHJveHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Cit9CisKK3N0
YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94
eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5
UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZ
X1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2Fz
dDxib29sKj4odXNlckRhdGEpKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjp1cGRh
dGVJc1VzaW5nUHJveHkoKQoreworICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVy
OworICAgIGdfb2JqZWN0X2dldChOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
InByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBBU1NF
UlQocmVzb2x2ZXIpOworCisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2
ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZv
ckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKKyAgICBnX3Byb3h5X3Jlc29sdmVy
X2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVs
bHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7
Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwg
dm9pZCopCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFj
ayhTb3VwQWRkcmVzcyogYWRkcmVzcywgZ3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAg
IGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChkYXRhKTsKKyAgICBhdXRvKiBvYnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVP
YnNlcnZlcio+KGRhdGEpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVz
c2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYg
KCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGludCBsZW47CisgICAgYXV0byogaXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihzb3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3Ms
ICZsZW4pKTsKKyAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVz
cyhpcGFkZHJlc3MpKTsKKworICAgIG9ic2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc291cF9z
ZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
aG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0
cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRy
ZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJs
ZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVz
b2x2ZV9hc3luYyhhZGRyZXNzLmdldCgpLCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5n
ZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJs
ZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAg
bV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyLT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9i
c2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgp
KSkKKyAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdkMWZlZjA3ZjE3
YjExNWNjOGFjZWI0YzA2ZDUwMDViOWNkZDU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVR
dWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAg
ICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVy
KikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2
ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3ZGRkMjIz
M2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYzOTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKFNP
VVApCi0KLSNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJTb3Vw
TmV0d29ya1Nlc3Npb24uaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSW5p
dGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhh
dmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsK
LXN0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJvb2wgZGlk
UmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBv
c3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgbGlzdCBpcwotICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1
c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KLSAgICAv
LyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMg
cmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2UncmUgdHJ5
aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBo
ZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0gICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lk
ZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJpcyAmJiAq
dXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZvaWQgZGlk
UmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsKLSAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhn
X3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Ig
ZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVz
b2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwotICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFBy
b3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVk
Rm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IHZvaWQqIHVzZXJEYXRhKQotewotICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVS
KHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1
c2VyRGF0YSkpOwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxs
YmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0
YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1
bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIEdS
ZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOwotICAgIGdfb2JqZWN0X2dldChOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5l
dHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVy
Lm91dFB0cigpLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5j
b20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2lu
Z1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQo
KSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBz
VXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc29sdmVk
Q2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1
ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9pZCBETlNS
ZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hf
ZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JD
cmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQotdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYy
YTE0MDdjMGYwYmNjZjIzNzIxMi4uM2ZmNTg0YzUxZDM5NzQ1NDI1NmQxNjUxY2MyYWEzYTdmYzFh
ZTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC00MCw4ICs0MCwxOCBAQAogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2lu
ZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hOwor
I2Vsc2UKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29s
dmVyOworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFk
PiBjcmVhdGVUaHJlYWQoKQogewogICAgIGF1dG8gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0
ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsKQEAgLTE2NCwxMyArMTc0LDIxIEBAIHZvaWQgTmV0d29ya1JU
Q1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uCiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgYXV0byByZXNv
bHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jlc29sdmVyPihbdGhpcywgaWRlbnRp
Zmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVz
b2x2ZXJQbGF0Zm9ybT4oaWRlbnRpZmllciwgW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENS
ZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkg
IT0gTmV0d29ya1JUQ1Jlc29sdmVyOjpFcnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVy
OjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhyZXN1bHQudmFsdWUo
KSksIGlkZW50aWZpZXIpOworICAgICAgICBhdXRvJiBwbGF0Zm9ybUFkZHJlc3NlcyA9IHJlc3Vs
dC52YWx1ZSgpLmdldCgpOworICAgICAgICBzaXplX3QgY291bnQgPSBwbGF0Zm9ybUFkZHJlc3Nl
cy5zaXplKCk7CisgICAgICAgIFZlY3RvcjxXZWJLaXQ6OlJUQ05ldHdvcms6OklQQWRkcmVzcz4g
YWRkcmVzc2VzOworICAgICAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3Vu
dCk7CisKKyAgICAgICAgZm9yIChhdXRvIGFkZHJlc3MgOiBwbGF0Zm9ybUFkZHJlc3NlcykKKyAg
ICAgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNz
KHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3MuZ2V0KCktPnNpbl9hZGRyKSkpOworCisgICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAgICAg
cmVzb2x2ZXItPnN0YXJ0KGFkZHJlc3MpOwogICAgIG1fcmVzb2x2ZXJzLmFkZChpZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc29sdmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4
MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi5hMTNiOWY5Njk3M2Y4N2E0YWNmMmMzNDEz
NzUzNzMzZTc1ZDhmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKQEAgLTMyLDY4ICszMiwzMiBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9z
dFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJv
ciAqZXJyb3IsIHZvaWQgKmluZm8pCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5
cGVJbmZvKTsKLQotICAgIGlmIChlcnJvci0+ZG9tYWluKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNh
bGxiYWNrLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGluZm8pOwotICAg
IGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyKj4oaW5mbyk7
Ci0KLSAgICBCb29sZWFuIHJlc3VsdDsKLSAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2Vz
ID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLQotICAgIHNpemVfdCBjb3VudCA9IENG
QXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7Ci0gICAgVmVjdG9yPFJUQ05ldHdvcms6
OklQQWRkcmVzcz4gYWRkcmVzc2VzOwotICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNvdW50KTsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsg
KytpbmRleCkgewotICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBhdXRvKiBh
ZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRh
dGFHZXRCeXRlUHRyKGRhdGEpKTsKLSAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChS
VENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy0+c2luX2FkZHIpKSk7
Ci0gICAgfQotICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKLX0KLQotTmV0d29y
a1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKLSAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpCitOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewogfQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6
On5OZXR3b3JrUlRDUmVzb2x2ZXIoKQogewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9v
cChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRN
b2RlKTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRy
KTsKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9y
OjpVbmtub3duKSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBT
dHJpbmcmIGFkZHJlc3MpCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCiB7Ci0gICAgbV9ob3N0ID0g
YWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNz
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRl
eHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhvc3RT
ZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBDRkhv
c3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgp
LCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3Rh
cnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29s
dmVyOjpzdG9wKCkKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcm
IGFkZHJlc3MpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgp
LCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7CisgICAgV2Vi
Q29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCB0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVz
b2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRk
cmVzc2VzKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQogewotICAgIGlmIChhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CisgICAgV2ViQ29yZTo6c3RvcFJl
c29sdmVETlModGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li44MjRhOGZi
ZmZmY2RmNDg2NzA3ZGE1MzQyOTE2Mjg1ODFhODQ2OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAt
MjgsMzAgKzI4LDMxIEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdv
cmsuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisjaW5jbHVkZSAiV2ViQ29yZS9E
TlMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtS
VENSZXNvbHZlciB7CitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6
RE5TUmVzb2x2ZU9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5r
bm93biwgQ2FuY2VsbGVkIH07CiAKLSAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0
ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRy
ZXNzPj4sIEVycm9yPjsKKyAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPj4sIEVy
cm9yPjsKICAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBZGRyZXNzZXNPckVycm9yJiYpPjsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwog
Ci0gICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgp
OworICAgIHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOworICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCk7CiAKLSAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRD
TmV0d29yazo6SVBBZGRyZXNzPiYpOworICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+JikgZmluYWw7CisgICAgdWludDY0X3QgZ2V0SWQoKSBmaW5hbCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH07CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CisgICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhh
bmRsZXI7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Rm
ZDYzMWNjN2JiNDAxMWZjNmI5OTRiYTJhOWY0ZGQ0ODVmMDMwMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VC
UlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9U
eXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgaWYgKGVycm9y
LT5kb21haW4pIHsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1
dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNf
Y2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSo+KGluZm8pOworCisgICAgQm9vbGVhbiByZXN1
bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9z
dEdldEFkZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7CisKKyAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2
ZWRBZGRyZXNzZXMpOworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsK
KyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZE
YXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRB
ZGRyZXNzZXMsIGluZGV4KTsKKyAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Cisg
ICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGFkZHJl
c3MpKTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCitO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3Qg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6
IE5ldHdvcmtSVENSZXNvbHZlcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKK3sKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6On5OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSgpCit7CisgICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwg
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIENGSG9z
dFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7Cisg
ICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBDRkhvc3RDbGllbnRD
b250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsK
KyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0
KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIEJvb2xlYW4gcmVzdWx0
ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNz
ZXMsIG51bGxwdHIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2
b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdG9wKCkKK3sKKyAgICBDRkhvc3RDYW5jZWxJ
bmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVz
c2VzKTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0
aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVy
cm9yOjpDYW5jZWxsZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3
YmIzMTA4NWE2NTY2ZmUzYzBkM2FjMzFhYWEyYWIzNGYwMmExMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
VVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgOiBwdWJsaWMgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EoKSBmaW5hbDsKKworICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZI
b3N0UmVmPiBtX2hvc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA2NzA1NWJkN2IzYzNkNGUzZDY1
YTM1ZDdjYzFlODE2Zjg1YTQyMzM3Li4wZjI2M2U5NDJkNTIxY2IzOTE4NDAwYmUzYjI2NzUwYjU0
N2Q1MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTM5LDYgKzM5LDggQEAgTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHRTb3VwLmNwcAogCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcAorCiBQbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5jcHAgQG5vLXVuaWZ5CiBQ
bGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjdlNTZhNGVmMDIzMWQ1Mzgx
NjEwMTk2MDdkMDgyMzU5MTg0YWZlLi5mZDMzNGZmNzgwYTA4NDUwNjhjZjJlYTA0YmViZTU5NjJm
NmFhNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTkxMiw2ICs5MTIsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyog
UlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJ
CTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAg
LyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYy
MUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5
MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5
IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9u
aXRvci5jcHAgKi87IH07CkBAIC0zMjczLDYgKzMyNzQsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5
RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZl
ci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyog
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0
NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYyMDgsNiArNjIxMSw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAw
QjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0
NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEy
QjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywK
KwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
aCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5j
cHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
aCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5t
ZXNzYWdlcy5pbiAqLywKQEAgLTEwNTQzLDYgKzEwNTQ4LDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2
RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8q
IE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBF
QTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENT
b2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0
QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICov
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333681</attachid>
            <date>2018-02-13 04:11:54 -0800</date>
            <delta_ts>2018-02-13 06:24:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180213131153.patch</filename>
            <type>text/plain</type>
            <size>75128</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMzhhZmM2MTY5OTA1ZGNiYzg0YmE1M2Q1MmFiZjAx
NTRiNDQ1MTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0xMiAgQ2hyaXMgRmxlaXphY2ggIDxj
ZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBkZWZlciBmb2N1c2VkVUlFbGVtZW50
IG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODQxZDgyNjE3YjVmOGUxOWRlYjIwZGQ0ZGQyYzZj
ODg5ZWU5NGM0Zi4uMThmZDdlNDNlMGM5ZWNhMWUzYWY1MmFjODJjOWEwZWZhMGI5MGVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wMi0wOCAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtSVENSZXNvbHZlciBwb3J0
IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzg4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgYW4gc3BlY2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0ZSB0aGUgZ2VuZXJpYyBj
b2RlIGluIHRoZSBiYXNlIGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHBvcnQK
KyAgICAgICAgYWdub3N0aWMgYW5kIGRlcGVuZGVudCBvbiBETlMgQVBJIGluIHRoZSBwbGF0Zm9y
bSBkaXJlY3Rvcnkgd2hpY2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRh
aWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rvci4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
OiBDcmVhdGUgYW4gYWxpYXMgY2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0
YW50aWF0ZSB0aGUgcmVzb2x2ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRl
cjo6Y3JlYXRlUmVzb2x2ZXIpOiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZl
IGEgbmV3IElQQWRkcmVzcyBjbGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24g
cnRjIGxpYndlYnJ0YyBsaWJyYXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUu
IFVzZSB0aGUgRE5TIEFQSSB0byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgaW4gdGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBp
ZGVudGlmaWVyIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRo
ZSBpZGVudGlmaWVyIGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9y
bSBzcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNv
bXBsZXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
YXJ0KTogQWRkIGEgbmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5l
cmFsCisgICAgICAgIHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMg
Y29kZS4gQXZvaWQgdXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGli
d2VydGMgY2xhc3NlcyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcg
RE5TIG5hbWUgcmVzb2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVy
OjpzdGFydCk6IE1ha2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAuCisgICAgICAgIE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3Ag
bWV0aG9kcyB0aGF0IHVzZSBETlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhl
IEROUyBtZXRob2RzIGluIHRoZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNz
LCBtYWtpbmcgc3VyZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBw
bGF0Zm9ybSBkaXJlY3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9y
IEdUSy4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRo
ZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIw
MTgtMDItMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50
IGJhc2VkIG9uIHJlZGlyZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3
ZmZjZjJjOGQ3OGVkMGVjLi4yYzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVKYXJDRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3Bw
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1
bkxvb3BDRi5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1
NzNjNmJkNTNhYmM0ODcwMTNhNDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4
YWYzODc4MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU0NGTmV0LmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAyZTUzZjBhOWE4Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1
MDY2M2ExZTQ1NTI4Yjc1OTYxODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcw
NSw2ICsxNzA1LDcgQEAgcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0Nvb2tpZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2Uu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0
d29yay9ETlMuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZk
NjFlZmRjODM4ZTkwOTlhMS4uMjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcAorcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMz
ZDY1NTVjMGFjMDI5NS4uOWYyMTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE5OSw2ICsyMTk5LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1
IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNG
ZXRjaEJvZHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRD
OTZERDFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2
NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcg
QEAKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
c291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VF
Njg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNv
bHZlUXVldWVDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNv
bHZlUXVldWVDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRh
YmxlU3RyZWFtU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MjA0OCw4ICsxMjA1MCw5IEBACiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29t
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMg
LyogU1ZHWm9vbUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3
RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBETlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJG
MzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAw
MEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZH
QW5pbWF0ZUNvbG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyRkEzQzUwMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJ
NTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJ
RTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlF
NEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4
RTEzMjEyNTY1QTQ0NDUyMzBGRjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0
MDBGNjI3Q0QgLyogRE5TLmggKi8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIERO
U1Jlc29sdmVRdWV1ZS5jcHAgKi8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIERO
U1Jlc29sdmVRdWV1ZS5oICovLApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5m
by5oICovLAotCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8s
CisJCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNw
cCAqLywKKwkJCQk3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuaCAqLywKIAkJCQk3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuaCAqLywKIAkJCQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZE
MzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1
bWVudEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4
MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DdXJsLmNtYWtlCmluZGV4IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2
NmYuLmUzY2M5MDhjZGZhYWFlN2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIu
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRE5TQ3VybC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2
ZVF1ZXVlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJs
LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcy
MjZlZWQ5NDcxYjNkMzI4NmMxYjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZl
YTYwYjk1ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0y
Nyw3ICsyNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llU3RvcmFnZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0
b3JhZ2VTb3VwLmNwcAotcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
c291cC9HUmVmUHRyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDUy
OTUwMGJmMTViZGM0NzRmNGFkM2MwMWI3YmZjOGE4NTc0MDI1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgi
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9
CisKK3ZvaWQgcmVzb2x2ZUROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYg
KGhvc3RuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5yZXNvbHZlKGhvc3RuYW1lLCBvYnNlcnZlcik7Cit9
CisKK3ZvaWQgc3RvcFJlc29sdmVETlMoRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sK
KyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnN0b3BSZXNvbHZlKG9i
c2VydmVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKaW5kZXgg
MjkwZjQwNjM0Yzg1ODhiZDFlM2IyZTZkN2RjMDNjNTM3MTc1ZTYyYy4uYjI5MjJjMDFiNWZiNTMx
NjA1YzRkOTZjZDE1YjU0ZDc3MWJkNGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROUy5oCkBAIC0yMywxNCArMjMsNDEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBETlNfaAotI2RlZmluZSBETlNfaAorI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisjaW5jbHVkZSA8bmV0aW5ldC9p
bi5oPgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYK
IAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVBBZGRyZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJUEFk
ZHJlc3MoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAg
ICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKiBnZXQoKSB7IHJldHVybiAmbV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAgIHN0
cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJlc3M7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBE
TlNSZXNvbHZlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkROU1Jlc29sdmVPYnNl
cnZlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3Rv
cjxJUEFkZHJlc3M+JikgeyB9OworICAgIHZpcnR1YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7Cit9
OworCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpOwotfQorV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUmVz
b2x2ZUROUyhETlNSZXNvbHZlT2JzZXJ2ZXIqKTsKIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThj
MmRmNDBjM2JmYmFjNWY1YzM5MjliY2EzMzkzMDBmMGEwMjYxOC4uNTQ3MTEwNTcwMzhlYjJjZGRl
NjgxYzdmZTYwZGY3ZjlhNGU1MGUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0Uo
U09VUCkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVTb3VwOworI2VsaWYgVVNFKENVUkwpCit1c2luZyBETlNSZXNvbHZl
UXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1cmw7CisjZWxpZiBVU0UoQ0YpCit1c2lu
ZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0OworI2VuZGlm
CisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0
aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZl
dGNoIGlzIHRyaWdnZXJlZCBieSBob3ZlcmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2lu
Zywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Np
bmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIuCiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2
ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUyLDE1ICs2OCwxNSBAQCBzdGF0aWMgY29uc3QgU2Vjb25k
cyByZXNvbHZpbmdSZXRyeURlbGF5IHsgMTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5T
UmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxE
TlNSZXNvbHZlUXVldWU+IHF1ZXVlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNv
bHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7CiAKICAgICByZXR1cm4gcXVldWU7CiB9CiAKIEROU1Jl
c29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKLSAgICA6IG1fdGltZXIoKnRoaXMsICZETlNS
ZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCisgICAgOiBtX2lzVXNpbmdQcm94eSh0cnVlKQorICAg
ICwgbV90aW1lcigqdGhpcywgJkROU1Jlc29sdmVRdWV1ZTo6dGltZXJGaXJlZCkKICAgICAsIG1f
cmVxdWVzdHNJbkZsaWdodCgwKQotICAgICwgbV9pc1VzaW5nUHJveHkodHJ1ZSkKICAgICAsIG1f
bGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZSgwKQogewogICAgIC8vIGlzVXNpbmdQcm94
eSB3aWxsIHJldHVybiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJz
dCBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNjNDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uNDkw
ZDcyNTE3Nzg3ZjJkZThmYzU5YTBhZTg5ODY5N2UzMDAyMGQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaWZuZGVmIEROU1Jlc29sdmVRdWV1ZV9oCiAjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9o
CiAKKyNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21p
Yz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzksMjkgKzQwLDMzIEBAIGNsYXNzIERO
U1Jlc29sdmVRdWV1ZSB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1
ZT47CiAKIHB1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNS
ZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBz
aW5nbGV0b24oKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJl
c29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgPSAwOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CiAg
ICAgICAgIC0tbV9yZXF1ZXN0c0luRmxpZ2h0OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBETlNS
ZXNvbHZlUXVldWUoKTsKLQorcHJvdGVjdGVkOgogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAK
LSAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpOwotICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZl
KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgbV9pc1VzaW5nUHJveHk7CiAKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2b2lkIHRpbWVyRmly
ZWQoKTsKIAogICAgIFRpbWVyIG1fdGltZXI7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1l
czsKICAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fcmVxdWVzdHNJbkZsaWdodDsKLSAgICBib29sIG1f
aXNVc2luZ1Byb3h5OwogICAgIGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1Rp
bWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZO
ZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAw
MmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMu
aCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYg
UExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1
ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewot
ICAgICAgICBtX2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBs
ZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
UHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJM
LmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0
cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRw
UHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAg
Q0ZJbmRleCBodHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5
LmdldCgpKTsKLSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlv
bmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQ
cm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRw
c1Byb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJy
YXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAg
ICAgIGh0dHBzUHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94
eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJh
Y2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9y
Kiwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRS
ZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNv
bmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlh
bGl6ZWQgYnkgbm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNv
bHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0
ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4
dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3Qg
PSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVu
dENhbGxiYWNrKCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2Vk
SG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1
bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpOwotI2Vsc2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQg
d2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2Fs
bGVkLgotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVu
TG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJ
bmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9p
ZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTdmOGJkMTFmOWFmODhhNjlmY2Jj
Zjc3YmZhODk3NGQ0ZTA0NzNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdl
YmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8
fCBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBk
YXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94
eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsK
KyAgICBpZiAoIXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0
cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVh
dGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJz
ZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENG
TmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3Mu
Z2V0KCkpKTsKKworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQo
aHR0cFByb3h5QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZB
cnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNv
dW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQ
cm94eUNvdW50ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChD
RkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtl
eSksIGtDRlByb3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisg
ICAgbV9pc1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9
CisKK3N0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJ
bmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVR
dWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8g
Y2FsbCBzaW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJp
YWJsZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2Uo
dGhlSG9zdCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFo
b3N0KSB7CisgICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07CisgICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZP
Uk0oV0lOKQorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5M
b29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBX
aW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlz
IHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOworI2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6
cmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovICwgRE5TUmVzb2x2ZU9ic2VydmVy
KiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9i
c2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNDBjNDk5MjRhZGM5OGFmODYzMDlkMGJkZTc0OGMxNDQyMzlmNzQz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1
ZUNGTmV0IDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29s
dmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVw
ZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2
ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAv
KiBob3N0bmFtZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYTU1NWRlNDUwYWYwN2MxZTJiNjNmNGFkOTVlNWQyNmE5MTIzYzc0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1
ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jl
c29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0
bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2
ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YTNmNjIzZTA0YzgyYzhiNmNjNTQ3ZmRmZWIzZTBmNzI2NjQ1MmUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIERO
U1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVm
YXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2
ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2
ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkg
ZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JikgZmluYWw7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFj
OWMwNTM2YTU2MGU2Y2UzZDIyMGFhMTViOWZkMzZkNTY5OWZhYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3Vw
LmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVl
dWVTb3VwLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBJbml0aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3Rh
eXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2ZSBwcm94eSBzZXR0aW5ncy4KK3N0YXRpYyBib29sIGlz
VXNpbmdIdHRwUHJveHkgPSB0cnVlOworc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0
cnVlOworCitzdGF0aWMgYm9vbCBkaWRSZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCit7CisgICAg
Ly8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9zc2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkku
IElmIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0IGlzCisgICAgLy8gZGlyZWN0Oi8vICh0aGUg
dXN1YWwgY2FzZSksIHRoZW4gdGhlIHVzZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRo
aXMgaXMgc2ltaWxhciB0bworICAgIC8vIHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxk
IGJlIG1hbnkgcG9zc2liaWxpdGllcyByZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBh
bmQKKyAgICAvLyBpZiB3ZSdyZSB0cnlpbmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBl
YWNoIG9uZSBpbiBvcmRlciwgYnV0IGhlcmUgd2UgYXJlIG5vdCB0cnlpbmcKKyAgICAvLyB0byBj
b25uZWN0LCBtZXJlbHkgdG8gZGVjaWRlIHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2Vk
LgorICAgIHJldHVybiB1cmlzICYmICp1cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIp
OworfQorCitzdGF0aWMgdm9pZCBkaWRSZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29s
dmVyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCog
aXNVc2luZ1Byb3h5KQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
VW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNv
bHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJFcnJvciBkZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6
ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKmlz
VXNpbmdQcm94eVR5cGUgPSBkaWRSZXNvbHZlUHJveHkodXJpcy5nZXQoKSk7CisgICAgKmlzVXNp
bmdQcm94eSA9IGlzVXNpbmdIdHRwUHJveHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Cit9CisKK3N0
YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94
eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5
UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZ
X1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2Fz
dDxib29sKj4odXNlckRhdGEpKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjp1cGRh
dGVJc1VzaW5nUHJveHkoKQoreworICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVy
OworICAgIGdfb2JqZWN0X2dldChOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
InByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBBU1NF
UlQocmVzb2x2ZXIpOworCisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2
ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZv
ckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKKyAgICBnX3Byb3h5X3Jlc29sdmVy
X2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVs
bHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7
Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwg
dm9pZCopCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFj
ayhTb3VwQWRkcmVzcyogYWRkcmVzcywgZ3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAg
IGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChkYXRhKTsKKyAgICBhdXRvKiBvYnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVP
YnNlcnZlcio+KGRhdGEpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVz
c2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYg
KCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGludCBsZW47CisgICAgYXV0byogaXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihzb3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3Ms
ICZsZW4pKTsKKyAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVz
cyhpcGFkZHJlc3MpKTsKKworICAgIG9ic2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc291cF9z
ZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
aG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0
cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRy
ZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJs
ZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVz
b2x2ZV9hc3luYyhhZGRyZXNzLmdldCgpLCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5n
ZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJs
ZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAg
bV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyLT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9i
c2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgp
KSkKKyAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdkMWZlZjA3ZjE3
YjExNWNjOGFjZWI0YzA2ZDUwMDViOWNkZDU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVR
dWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAg
ICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVy
KikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2
ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3ZGRkMjIz
M2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYzOTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKFNP
VVApCi0KLSNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJTb3Vw
TmV0d29ya1Nlc3Npb24uaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSW5p
dGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhh
dmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsK
LXN0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJvb2wgZGlk
UmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBv
c3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgbGlzdCBpcwotICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1
c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KLSAgICAv
LyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMg
cmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2UncmUgdHJ5
aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBo
ZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0gICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lk
ZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJpcyAmJiAq
dXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZvaWQgZGlk
UmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsKLSAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhn
X3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Ig
ZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVz
b2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwotICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFBy
b3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVk
Rm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IHZvaWQqIHVzZXJEYXRhKQotewotICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVS
KHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1
c2VyRGF0YSkpOwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxs
YmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0
YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1
bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIEdS
ZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOwotICAgIGdfb2JqZWN0X2dldChOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5l
dHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVy
Lm91dFB0cigpLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5j
b20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2lu
Z1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQo
KSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBz
VXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc29sdmVk
Q2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1
ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9pZCBETlNS
ZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hf
ZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JD
cmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQotdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYy
YTE0MDdjMGYwYmNjZjIzNzIxMi4uM2ZmNTg0YzUxZDM5NzQ1NDI1NmQxNjUxY2MyYWEzYTdmYzFh
ZTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC00MCw4ICs0MCwxOCBAQAogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2lu
ZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hOwor
I2Vsc2UKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29s
dmVyOworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFk
PiBjcmVhdGVUaHJlYWQoKQogewogICAgIGF1dG8gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0
ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsKQEAgLTE2NCwxMyArMTc0LDIxIEBAIHZvaWQgTmV0d29ya1JU
Q1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uCiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgYXV0byByZXNv
bHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jlc29sdmVyPihbdGhpcywgaWRlbnRp
Zmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVz
b2x2ZXJQbGF0Zm9ybT4oaWRlbnRpZmllciwgW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENS
ZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkg
IT0gTmV0d29ya1JUQ1Jlc29sdmVyOjpFcnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVy
OjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhyZXN1bHQudmFsdWUo
KSksIGlkZW50aWZpZXIpOworICAgICAgICBhdXRvJiBwbGF0Zm9ybUFkZHJlc3NlcyA9IHJlc3Vs
dC52YWx1ZSgpLmdldCgpOworICAgICAgICBzaXplX3QgY291bnQgPSBwbGF0Zm9ybUFkZHJlc3Nl
cy5zaXplKCk7CisgICAgICAgIFZlY3RvcjxXZWJLaXQ6OlJUQ05ldHdvcms6OklQQWRkcmVzcz4g
YWRkcmVzc2VzOworICAgICAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3Vu
dCk7CisKKyAgICAgICAgZm9yIChhdXRvIGFkZHJlc3MgOiBwbGF0Zm9ybUFkZHJlc3NlcykKKyAg
ICAgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNz
KHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3MuZ2V0KCktPnNpbl9hZGRyKSkpOworCisgICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAgICAg
cmVzb2x2ZXItPnN0YXJ0KGFkZHJlc3MpOwogICAgIG1fcmVzb2x2ZXJzLmFkZChpZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc29sdmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4
MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi5hMTNiOWY5Njk3M2Y4N2E0YWNmMmMzNDEz
NzUzNzMzZTc1ZDhmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKQEAgLTMyLDY4ICszMiwzMiBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9z
dFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJv
ciAqZXJyb3IsIHZvaWQgKmluZm8pCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5
cGVJbmZvKTsKLQotICAgIGlmIChlcnJvci0+ZG9tYWluKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNh
bGxiYWNrLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGluZm8pOwotICAg
IGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyKj4oaW5mbyk7
Ci0KLSAgICBCb29sZWFuIHJlc3VsdDsKLSAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2Vz
ID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLQotICAgIHNpemVfdCBjb3VudCA9IENG
QXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7Ci0gICAgVmVjdG9yPFJUQ05ldHdvcms6
OklQQWRkcmVzcz4gYWRkcmVzc2VzOwotICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNvdW50KTsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsg
KytpbmRleCkgewotICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBhdXRvKiBh
ZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRh
dGFHZXRCeXRlUHRyKGRhdGEpKTsKLSAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChS
VENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy0+c2luX2FkZHIpKSk7
Ci0gICAgfQotICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKLX0KLQotTmV0d29y
a1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKLSAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpCitOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewogfQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6
On5OZXR3b3JrUlRDUmVzb2x2ZXIoKQogewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9v
cChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRN
b2RlKTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRy
KTsKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9y
OjpVbmtub3duKSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBT
dHJpbmcmIGFkZHJlc3MpCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCiB7Ci0gICAgbV9ob3N0ID0g
YWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNz
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRl
eHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhvc3RT
ZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBDRkhv
c3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgp
LCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3Rh
cnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29s
dmVyOjpzdG9wKCkKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcm
IGFkZHJlc3MpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgp
LCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7CisgICAgV2Vi
Q29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCB0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVz
b2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRk
cmVzc2VzKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQogewotICAgIGlmIChhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CisgICAgV2ViQ29yZTo6c3RvcFJl
c29sdmVETlModGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li44MjRhOGZi
ZmZmY2RmNDg2NzA3ZGE1MzQyOTE2Mjg1ODFhODQ2OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAt
MjgsMzAgKzI4LDMxIEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdv
cmsuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisjaW5jbHVkZSAiV2ViQ29yZS9E
TlMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtS
VENSZXNvbHZlciB7CitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6
RE5TUmVzb2x2ZU9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5r
bm93biwgQ2FuY2VsbGVkIH07CiAKLSAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0
ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRy
ZXNzPj4sIEVycm9yPjsKKyAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPj4sIEVy
cm9yPjsKICAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBZGRyZXNzZXNPckVycm9yJiYpPjsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwog
Ci0gICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgp
OworICAgIHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOworICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCk7CiAKLSAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRD
TmV0d29yazo6SVBBZGRyZXNzPiYpOworICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+JikgZmluYWw7CisgICAgdWludDY0X3QgZ2V0SWQoKSBmaW5hbCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH07CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CisgICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhh
bmRsZXI7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Rm
ZDYzMWNjN2JiNDAxMWZjNmI5OTRiYTJhOWY0ZGQ0ODVmMDMwMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VC
UlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9U
eXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgaWYgKGVycm9y
LT5kb21haW4pIHsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1
dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNf
Y2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSo+KGluZm8pOworCisgICAgQm9vbGVhbiByZXN1
bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9z
dEdldEFkZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7CisKKyAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2
ZWRBZGRyZXNzZXMpOworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsK
KyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZE
YXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRB
ZGRyZXNzZXMsIGluZGV4KTsKKyAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Cisg
ICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGFkZHJl
c3MpKTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCitO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3Qg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6
IE5ldHdvcmtSVENSZXNvbHZlcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKK3sKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6On5OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSgpCit7CisgICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwg
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIENGSG9z
dFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7Cisg
ICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBDRkhvc3RDbGllbnRD
b250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsK
KyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0
KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIEJvb2xlYW4gcmVzdWx0
ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNz
ZXMsIG51bGxwdHIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2
b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdG9wKCkKK3sKKyAgICBDRkhvc3RDYW5jZWxJ
bmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVz
c2VzKTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0
aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVy
cm9yOjpDYW5jZWxsZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3
YmIzMTA4NWE2NTY2ZmUzYzBkM2FjMzFhYWEyYWIzNGYwMmExMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
VVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgOiBwdWJsaWMgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EoKSBmaW5hbDsKKworICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZI
b3N0UmVmPiBtX2hvc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA2NzA1NWJkN2IzYzNkNGUzZDY1
YTM1ZDdjYzFlODE2Zjg1YTQyMzM3Li4wZjI2M2U5NDJkNTIxY2IzOTE4NDAwYmUzYjI2NzUwYjU0
N2Q1MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTM5LDYgKzM5LDggQEAgTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHRTb3VwLmNwcAogCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcAorCiBQbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5jcHAgQG5vLXVuaWZ5CiBQ
bGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjdlNTZhNGVmMDIzMWQ1Mzgx
NjEwMTk2MDdkMDgyMzU5MTg0YWZlLi5mZDMzNGZmNzgwYTA4NDUwNjhjZjJlYTA0YmViZTU5NjJm
NmFhNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTkxMiw2ICs5MTIsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyog
UlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJ
CTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAg
LyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYy
MUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5
MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5
IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9u
aXRvci5jcHAgKi87IH07CkBAIC0zMjczLDYgKzMyNzQsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5
RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZl
ci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyog
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0
NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYyMDgsNiArNjIxMSw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAw
QjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0
NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEy
QjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywK
KwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
aCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5j
cHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
aCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5t
ZXNzYWdlcy5pbiAqLywKQEAgLTEwNTQzLDYgKzEwNTQ4LDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2
RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8q
IE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBF
QTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENT
b2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0
QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICov
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333685</attachid>
            <date>2018-02-13 06:24:24 -0800</date>
            <delta_ts>2018-02-19 03:44:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180213152422.patch</filename>
            <type>text/plain</type>
            <size>75128</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMzhhZmM2MTY5OTA1ZGNiYzg0YmE1M2Q1MmFiZjAx
NTRiNDQ1MTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3YgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3RvcFJlc29sdmVE
TlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0aGlzIGNsYXNz
IHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwgaXQgZG9lcwor
ICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAgICAgICAgKFdl
YkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3Qgc29j
a2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVPYnNlcnZlcik6IEFkZCB0aGlzIG9ic2VydmVyIGNsYXNzIHRvIGFsbG93IHN0b3Jpbmcg
dGhlIGNvbXBsZXRpb24gaGFuZGxlciBhbmQKKyAgICAgICAgaWRlbnRpZnkgdGhlIHJlc29sdmUg
b3BlcmF0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5j
cHA6IEFkZCB0aGUgRE5TUmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhl
IHNpbmdsZXRvbi4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9u
KTogVXNlIEROU1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhl
IHNpbmdsZXRvbi4uCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUp
OiBBZGQgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNl
bmRzIHRoZQorICAgICAgICBvYnNlcnZlciBvYmplY3Qgd2l0aCB0aGUgY29tcGxldGVkIG1ldGhv
ZCB0byByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6c3RvcFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVy
YXRpb24gd2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFj
dCwgc28gdGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5j
dGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5l
dC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdl
bmVyYWwKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5n
IGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywg
d2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1
ZXVlQ0Y6OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBB
ZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDog
TmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRp
bmcKKyAgICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93
cyBzdG9wcGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9i
c2VydmVyQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUg
c291cCBwbGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhl
IGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgb2JzZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpE
TlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlv
biB3aXRoIHRoZSBzb3VwIGxpYnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVTb3VwOjpzdG9wUmVzb2x2ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nl
c3Mgd2l0aCBhIEdDYW5jZWxsYWJsZS4KKwogMjAxOC0wMi0xMiAgQ2hyaXMgRmxlaXphY2ggIDxj
ZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBkZWZlciBmb2N1c2VkVUlFbGVtZW50
IG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODQxZDgyNjE3YjVmOGUxOWRlYjIwZGQ0ZGQyYzZj
ODg5ZWU5NGM0Zi4uMThmZDdlNDNlMGM5ZWNhMWUzYWY1MmFjODJjOWEwZWZhMGI5MGVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wMi0wOCAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtSVENSZXNvbHZlciBwb3J0
IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzg4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgYW4gc3BlY2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0ZSB0aGUgZ2VuZXJpYyBj
b2RlIGluIHRoZSBiYXNlIGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHBvcnQK
KyAgICAgICAgYWdub3N0aWMgYW5kIGRlcGVuZGVudCBvbiBETlMgQVBJIGluIHRoZSBwbGF0Zm9y
bSBkaXJlY3Rvcnkgd2hpY2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRh
aWxzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rvci4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
OiBDcmVhdGUgYW4gYWxpYXMgY2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0
YW50aWF0ZSB0aGUgcmVzb2x2ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRl
cjo6Y3JlYXRlUmVzb2x2ZXIpOiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZl
IGEgbmV3IElQQWRkcmVzcyBjbGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24g
cnRjIGxpYndlYnJ0YyBsaWJyYXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUu
IFVzZSB0aGUgRE5TIEFQSSB0byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgaW4gdGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBp
ZGVudGlmaWVyIG9mIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRo
ZSBpZGVudGlmaWVyIGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9y
bSBzcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNv
bXBsZXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
YXJ0KTogQWRkIGEgbmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5l
cmFsCisgICAgICAgIHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMg
Y29kZS4gQXZvaWQgdXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGli
d2VydGMgY2xhc3NlcyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcg
RE5TIG5hbWUgcmVzb2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVy
OjpzdGFydCk6IE1ha2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAuCisgICAgICAgIE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3Ag
bWV0aG9kcyB0aGF0IHVzZSBETlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhl
IEROUyBtZXRob2RzIGluIHRoZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNz
LCBtYWtpbmcgc3VyZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBw
bGF0Zm9ybSBkaXJlY3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9y
IEdUSy4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRo
ZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIw
MTgtMDItMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50
IGJhc2VkIG9uIHJlZGlyZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3
ZmZjZjJjOGQ3OGVkMGVjLi4yYzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVKYXJDRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3Bw
Ci0gICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1
bkxvb3BDRi5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1
NzNjNmJkNTNhYmM0ODcwMTNhNDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4
YWYzODc4MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU0NGTmV0LmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
CiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAyZTUzZjBhOWE4Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1
MDY2M2ExZTQ1NTI4Yjc1OTYxODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcw
NSw2ICsxNzA1LDcgQEAgcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0Nvb2tpZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2Uu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0
d29yay9ETlMuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZk
NjFlZmRjODM4ZTkwOTlhMS4uMjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9t
b2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcAorcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAK
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMz
ZDY1NTVjMGFjMDI5NS4uOWYyMTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE5OSw2ICsyMTk5LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1
IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUz
ODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNG
ZXRjaEJvZHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRD
OTZERDFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2
NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcg
QEAKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
c291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VF
Njg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNv
bHZlUXVldWVDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNv
bHZlUXVldWVDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRh
YmxlU3RyZWFtU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MjA0OCw4ICsxMjA1MCw5IEBACiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29t
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMg
LyogU1ZHWm9vbUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3
RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBETlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJG
MzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAw
MEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZH
QW5pbWF0ZUNvbG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyRkEzQzUwMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJ
NTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJ
RTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlF
NEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4
RTEzMjEyNTY1QTQ0NDUyMzBGRjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0
MDBGNjI3Q0QgLyogRE5TLmggKi8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIERO
U1Jlc29sdmVRdWV1ZS5jcHAgKi8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIERO
U1Jlc29sdmVRdWV1ZS5oICovLApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5m
by5oICovLAotCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8s
CisJCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNw
cCAqLywKKwkJCQk3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuaCAqLywKIAkJCQk3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuaCAqLywKIAkJCQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZE
MzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1
bWVudEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4
MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DdXJsLmNtYWtlCmluZGV4IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2
NmYuLmUzY2M5MDhjZGZhYWFlN2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIu
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRE5TQ3VybC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2
ZVF1ZXVlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJs
LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcy
MjZlZWQ5NDcxYjNkMzI4NmMxYjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZl
YTYwYjk1ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0y
Nyw3ICsyNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llU3RvcmFnZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0
b3JhZ2VTb3VwLmNwcAotcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
c291cC9HUmVmUHRyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDUy
OTUwMGJmMTViZGM0NzRmNGFkM2MwMWI3YmZjOGE4NTc0MDI1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgi
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9
CisKK3ZvaWQgcmVzb2x2ZUROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBETlNSZXNvbHZlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYg
KGhvc3RuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RE5T
UmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5yZXNvbHZlKGhvc3RuYW1lLCBvYnNlcnZlcik7Cit9
CisKK3ZvaWQgc3RvcFJlc29sdmVETlMoRE5TUmVzb2x2ZU9ic2VydmVyKiBvYnNlcnZlcikKK3sK
KyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnN0b3BSZXNvbHZlKG9i
c2VydmVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKaW5kZXgg
MjkwZjQwNjM0Yzg1ODhiZDFlM2IyZTZkN2RjMDNjNTM3MTc1ZTYyYy4uYjI5MjJjMDFiNWZiNTMx
NjA1YzRkOTZjZDE1YjU0ZDc3MWJkNGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROUy5oCkBAIC0yMywxNCArMjMsNDEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBETlNfaAotI2RlZmluZSBETlNfaAorI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShDT0NP
QSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisjaW5jbHVkZSA8bmV0aW5ldC9p
bi5oPgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYK
IAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVBBZGRyZXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJUEFk
ZHJlc3MoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAg
bWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAg
ICAgbV9hZGRyZXNzID0gKmFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKiBnZXQoKSB7IHJldHVybiAmbV9hZGRyZXNzOyB9OworCitwcml2YXRlOgorICAgIHN0
cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJlc3M7Cit9OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBE
TlNSZXNvbHZlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkROU1Jlc29sdmVPYnNl
cnZlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3Rv
cjxJUEFkZHJlc3M+JikgeyB9OworICAgIHZpcnR1YWwgdWludDY0X3QgZ2V0SWQoKSA9IDA7Cit9
OworCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpOwotfQorV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wUmVz
b2x2ZUROUyhETlNSZXNvbHZlT2JzZXJ2ZXIqKTsKIAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKaW5kZXggYThj
MmRmNDBjM2JmYmFjNWY1YzM5MjliY2EzMzkzMDBmMGEwMjYxOC4uNTQ3MTEwNTcwMzhlYjJjZGRl
NjgxYzdmZTYwZGY3ZjlhNGU1MGUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcApAQCAtMjcsMTEgKzI3LDI3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0Uo
U09VUCkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVk
ZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIFVTRShTT1VQKQordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVTb3VwOworI2VsaWYgVVNFKENVUkwpCit1c2luZyBETlNSZXNvbHZl
UXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1cmw7CisjZWxpZiBVU0UoQ0YpCit1c2lu
ZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0OworI2VuZGlm
CisKIC8vIFdoZW4gcmVzb2x2ZSBxdWV1ZSBpcyBlbXB0eSwgd2UgZmlyZSBhc3luYyByZXNvbHV0
aW9uIHJlcXVlc3RzIGltbWVkaWF0ZWx5ICh3aGljaCBpcyBpbXBvcnRhbnQgaWYgdGhlIHByZWZl
dGNoIGlzIHRyaWdnZXJlZCBieSBob3ZlcmluZykuCiAvLyBCdXQgZHVyaW5nIHBhZ2UgcGFyc2lu
Zywgd2Ugc2hvdWxkIGNvYWxlc2NlIGlkZW50aWNhbCByZXF1ZXN0cyB0byBhdm9pZCBzdHJlc3Np
bmcgb3V0IHRoZSBETlMgcmVzb2x2ZXIuCiBzdGF0aWMgY29uc3QgaW50IGdOYW1lc1RvUmVzb2x2
ZUltbWVkaWF0ZWx5ID0gNDsKQEAgLTUyLDE1ICs2OCwxNSBAQCBzdGF0aWMgY29uc3QgU2Vjb25k
cyByZXNvbHZpbmdSZXRyeURlbGF5IHsgMTAwX21zIH07CiAKIEROU1Jlc29sdmVRdWV1ZSYgRE5T
UmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxE
TlNSZXNvbHZlUXVldWU+IHF1ZXVlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxETlNSZXNv
bHZlUXVldWVQbGF0Zm9ybT4gcXVldWU7CiAKICAgICByZXR1cm4gcXVldWU7CiB9CiAKIEROU1Jl
c29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKLSAgICA6IG1fdGltZXIoKnRoaXMsICZETlNS
ZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCisgICAgOiBtX2lzVXNpbmdQcm94eSh0cnVlKQorICAg
ICwgbV90aW1lcigqdGhpcywgJkROU1Jlc29sdmVRdWV1ZTo6dGltZXJGaXJlZCkKICAgICAsIG1f
cmVxdWVzdHNJbkZsaWdodCgwKQotICAgICwgbV9pc1VzaW5nUHJveHkodHJ1ZSkKICAgICAsIG1f
bGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZSgwKQogewogICAgIC8vIGlzVXNpbmdQcm94
eSB3aWxsIHJldHVybiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJz
dCBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNv
bHZlUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1
ZXVlLmgKaW5kZXggZDJhN2E3N2I4YmNjNDhkMWMwNWFiYjE4NjVkN2UyYmQyZWYwYjhhYS4uNDkw
ZDcyNTE3Nzg3ZjJkZThmYzU5YTBhZTg5ODY5N2UzMDAyMGQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaWZuZGVmIEROU1Jlc29sdmVRdWV1ZV9oCiAjZGVmaW5lIEROU1Jlc29sdmVRdWV1ZV9o
CiAKKyNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGF0b21p
Yz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzksMjkgKzQwLDMzIEBAIGNsYXNzIERO
U1Jlc29sdmVRdWV1ZSB7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1
ZT47CiAKIHB1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWUoKTsKKyAgICB2aXJ0dWFsIH5ETlNS
ZXNvbHZlUXVldWUoKSA9IGRlZmF1bHQ7CisKICAgICBzdGF0aWMgRE5TUmVzb2x2ZVF1ZXVlJiBz
aW5nbGV0b24oKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFJl
c29sdmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgPSAwOwogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpOwogICAgIHZvaWQgZGVjcmVtZW50UmVxdWVzdENvdW50KCkKICAgICB7CiAg
ICAgICAgIC0tbV9yZXF1ZXN0c0luRmxpZ2h0OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBETlNS
ZXNvbHZlUXVldWUoKTsKLQorcHJvdGVjdGVkOgogICAgIGJvb2wgaXNVc2luZ1Byb3h5KCk7CiAK
LSAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpOwotICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZl
KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgbV9pc1VzaW5nUHJveHk7CiAKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2b2lkIHRpbWVyRmly
ZWQoKTsKIAogICAgIFRpbWVyIG1fdGltZXI7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9uYW1l
czsKICAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fcmVxdWVzdHNJbkZsaWdodDsKLSAgICBib29sIG1f
aXNVc2luZ1Byb3h5OwogICAgIGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1Rp
bWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZO
ZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAw
MmZkMWNkMmQ3Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMu
aCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2lu
Y2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYg
UExBVEZPUk0oSU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1
ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewot
ICAgICAgICBtX2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBs
ZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
UHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJM
LmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0
cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRw
UHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAg
Q0ZJbmRleCBodHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5
LmdldCgpKTsKLSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlv
bmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQ
cm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRw
c1Byb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJy
YXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAg
ICAgIGh0dHBzUHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94
eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJh
Y2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9y
Kiwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRS
ZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNv
bmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlh
bGl6ZWQgYnkgbm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNv
bHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0
ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4
dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3Qg
PSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVu
dENhbGxiYWNrKCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2Vk
SG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1
bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpOwotI2Vsc2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQg
d2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2Fs
bGVkLgotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVu
TG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJ
bmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9p
ZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTdmOGJkMTFmOWFmODhhNjlmY2Jj
Zjc3YmZhODk3NGQ0ZTA0NzNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdl
YmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8
fCBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBk
YXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94
eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsK
KyAgICBpZiAoIXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0
cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVh
dGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJz
ZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENG
TmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3Mu
Z2V0KCkpKTsKKworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQo
aHR0cFByb3h5QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZB
cnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNv
dW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQ
cm94eUNvdW50ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChD
RkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtl
eSksIGtDRlByb3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisg
ICAgbV9pc1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9
CisKK3N0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJ
bmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVR
dWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8g
Y2FsbCBzaW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJp
YWJsZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2Uo
dGhlSG9zdCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFo
b3N0KSB7CisgICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAw
LCAwIH07CisgICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhl
IGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVh
biByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZj
b250ZXh0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZP
Uk0oV0lOKQorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5M
b29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBX
aW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlz
IHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOworI2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0
LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6
cmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovICwgRE5TUmVzb2x2ZU9ic2VydmVy
KiAvKiBvYnNlcnZlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9i
c2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hNDBjNDk5MjRhZGM5OGFmODYzMDlkMGJkZTc0OGMxNDQyMzlmNzQz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1
ZUNGTmV0IDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUsIEROU1Jlc29sdmVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29s
dmUoRE5TUmVzb2x2ZU9ic2VydmVyKikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVw
ZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2
ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAv
KiBob3N0bmFtZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZl
dGNoRE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYTU1NWRlNDUwYWYwN2MxZTJiNjNmNGFkOTVlNWQyNmE5MTIzYzc0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1
ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jl
c29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0
bmFtZSAqLyAsIEROU1Jlc29sdmVPYnNlcnZlciogLyogb2JzZXJ2ZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2
ZShETlNSZXNvbHZlT2JzZXJ2ZXIqIC8qIG9ic2VydmVyICovKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YTNmNjIzZTA0YzgyYzhiNmNjNTQ3ZmRmZWIzZTBmNzI2NjQ1MmUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDdXJsIDogcHVibGljIERO
U1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVm
YXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2
ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2
ZXIqKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkg
ZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JikgZmluYWw7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFj
OWMwNTM2YTU2MGU2Y2UzZDIyMGFhMTViOWZkMzZkNTY5OWZhYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3Vw
LmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVl
dWVTb3VwLmgiCisKKyNpZiBVU0UoU09VUCkKKworI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBJbml0aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3Rh
eXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2ZSBwcm94eSBzZXR0aW5ncy4KK3N0YXRpYyBib29sIGlz
VXNpbmdIdHRwUHJveHkgPSB0cnVlOworc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0
cnVlOworCitzdGF0aWMgYm9vbCBkaWRSZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCit7CisgICAg
Ly8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9zc2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkku
IElmIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0IGlzCisgICAgLy8gZGlyZWN0Oi8vICh0aGUg
dXN1YWwgY2FzZSksIHRoZW4gdGhlIHVzZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRo
aXMgaXMgc2ltaWxhciB0bworICAgIC8vIHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxk
IGJlIG1hbnkgcG9zc2liaWxpdGllcyByZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBh
bmQKKyAgICAvLyBpZiB3ZSdyZSB0cnlpbmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBl
YWNoIG9uZSBpbiBvcmRlciwgYnV0IGhlcmUgd2UgYXJlIG5vdCB0cnlpbmcKKyAgICAvLyB0byBj
b25uZWN0LCBtZXJlbHkgdG8gZGVjaWRlIHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2Vk
LgorICAgIHJldHVybiB1cmlzICYmICp1cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIp
OworfQorCitzdGF0aWMgdm9pZCBkaWRSZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29s
dmVyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCog
aXNVc2luZ1Byb3h5KQoreworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
VW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNv
bHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJFcnJvciBkZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6
ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKmlz
VXNpbmdQcm94eVR5cGUgPSBkaWRSZXNvbHZlUHJveHkodXJpcy5nZXQoKSk7CisgICAgKmlzVXNp
bmdQcm94eSA9IGlzVXNpbmdIdHRwUHJveHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Cit9CisKK3N0
YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94
eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHByb3h5
UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZ
X1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2Fz
dDxib29sKj4odXNlckRhdGEpKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjp1cGRh
dGVJc1VzaW5nUHJveHkoKQoreworICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVy
OworICAgIGdfb2JqZWN0X2dldChOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
InByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBBU1NF
UlQocmVzb2x2ZXIpOworCisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2
ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZv
ckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKKyAgICBnX3Byb3h5X3Jlc29sdmVy
X2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVs
bHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7
Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwg
dm9pZCopCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFj
ayhTb3VwQWRkcmVzcyogYWRkcmVzcywgZ3VpbnQgc3RhdHVzLCB2b2lkKiBkYXRhKQoreworICAg
IGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChkYXRhKTsKKyAgICBhdXRvKiBvYnNlcnZlciA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVP
YnNlcnZlcio+KGRhdGEpOworCisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVz
c2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOworCisgICAgaWYg
KCFzb3VwX2FkZHJlc3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGludCBsZW47CisgICAgYXV0byogaXBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihzb3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3Ms
ICZsZW4pKTsKKyAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVz
cyhpcGFkZHJlc3MpKTsKKworICAgIG9ic2VydmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc291cF9z
ZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
aG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0
cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCBETlNSZXNvbHZlT2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGFkZHJlc3MgPSBhZG9wdEdSZWYoc291cF9hZGRy
ZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLCAwKSk7CisgICAgYXV0byBjYW5jZWxsYWJs
ZSA9IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVz
b2x2ZV9hc3luYyhhZGRyZXNzLmdldCgpLCBzb3VwX3Nlc3Npb25fZ2V0X2FzeW5jX2NvbnRleHQo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5n
ZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCkpLCBjYW5jZWxsYWJs
ZS5nZXQoKSwgcmVzb2x2ZWRXaXRoT2JzZXJ2ZXJDYWxsYmFjaywgb2JzZXJ2ZXIpOworCisgICAg
bV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyLT5nZXRJZCgpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29sdmUoRE5TUmVzb2x2ZU9i
c2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX29ic2VydmVycy50YWtlKG9ic2VydmVyLT5nZXRJZCgp
KSkKKyAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwoY2FuY2VsbGFibGUuZ2V0KCkpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdkMWZlZjA3ZjE3
YjExNWNjOGFjZWI0YzA2ZDUwMDViOWNkZDU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVTb3VwIDogcHVibGljIEROU1Jlc29sdmVR
dWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAg
ICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE5TUmVzb2x2ZU9ic2VydmVy
KikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZShETlNSZXNvbHZlT2JzZXJ2ZXIqKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fb2JzZXJ2
ZXJzOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3ZGRkMjIz
M2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYzOTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKFNP
VVApCi0KLSNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJTb3Vw
TmV0d29ya1Nlc3Npb24uaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSW5p
dGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhh
dmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsK
LXN0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJvb2wgZGlk
UmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBv
c3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgbGlzdCBpcwotICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1
c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KLSAgICAv
LyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMg
cmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2UncmUgdHJ5
aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBo
ZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0gICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lk
ZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJpcyAmJiAq
dXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZvaWQgZGlk
UmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsKLSAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhn
X3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Ig
ZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVz
b2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwotICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFBy
b3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVk
Rm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IHZvaWQqIHVzZXJEYXRhKQotewotICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVS
KHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1
c2VyRGF0YSkpOwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxs
YmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0
YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1
bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19
Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIEdS
ZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOwotICAgIGdfb2JqZWN0X2dldChOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5l
dHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJlc29sdmVy
Lm91dFB0cigpLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhhbXBsZS5j
b20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1faXNVc2lu
Z1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQo
KSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBz
VXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlc29sdmVk
Q2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVzb2x2ZVF1
ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9pZCBETlNS
ZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hf
ZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JD
cmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCku
ZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQotdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNhMmYwMWYy
YTE0MDdjMGYwYmNjZjIzNzIxMi4uM2ZmNTg0YzUxZDM5NzQ1NDI1NmQxNjUxY2MyYWEzYTdmYzFh
ZTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC00MCw4ICs0MCwxOCBAQAogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2lu
ZyBOZXR3b3JrUlRDUmVzb2x2ZXJQbGF0Zm9ybSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hOwor
I2Vsc2UKK3VzaW5nIE5ldHdvcmtSVENSZXNvbHZlclBsYXRmb3JtID0gTmV0d29ya1JUQ1Jlc29s
dmVyOworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFk
PiBjcmVhdGVUaHJlYWQoKQogewogICAgIGF1dG8gdGhyZWFkID0gcnRjOjpUaHJlYWQ6OkNyZWF0
ZVdpdGhTb2NrZXRTZXJ2ZXIoKTsKQEAgLTE2NCwxMyArMTc0LDIxIEBAIHZvaWQgTmV0d29ya1JU
Q1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uCiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgYXV0byByZXNv
bHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JUQ1Jlc29sdmVyPihbdGhpcywgaWRlbnRp
Zmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVz
b2x2ZXJQbGF0Zm9ybT4oaWRlbnRpZmllciwgW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENS
ZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkg
IT0gTmV0d29ya1JUQ1Jlc29sdmVyOjpFcnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAgICAgICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVy
OjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhyZXN1bHQudmFsdWUo
KSksIGlkZW50aWZpZXIpOworICAgICAgICBhdXRvJiBwbGF0Zm9ybUFkZHJlc3NlcyA9IHJlc3Vs
dC52YWx1ZSgpLmdldCgpOworICAgICAgICBzaXplX3QgY291bnQgPSBwbGF0Zm9ybUFkZHJlc3Nl
cy5zaXplKCk7CisgICAgICAgIFZlY3RvcjxXZWJLaXQ6OlJUQ05ldHdvcms6OklQQWRkcmVzcz4g
YWRkcmVzc2VzOworICAgICAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3Vu
dCk7CisKKyAgICAgICAgZm9yIChhdXRvIGFkZHJlc3MgOiBwbGF0Zm9ybUFkZHJlc3NlcykKKyAg
ICAgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNz
KHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3MuZ2V0KCktPnNpbl9hZGRyKSkpOworCisgICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAgICAg
cmVzb2x2ZXItPnN0YXJ0KGFkZHJlc3MpOwogICAgIG1fcmVzb2x2ZXJzLmFkZChpZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc29sdmVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4
MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi5hMTNiOWY5Njk3M2Y4N2E0YWNmMmMzNDEz
NzUzNzMzZTc1ZDhmMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKQEAgLTMyLDY4ICszMiwzMiBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9z
dFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJv
ciAqZXJyb3IsIHZvaWQgKmluZm8pCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5
cGVJbmZvKTsKLQotICAgIGlmIChlcnJvci0+ZG9tYWluKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNh
bGxiYWNrLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGluZm8pOwotICAg
IGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyKj4oaW5mbyk7
Ci0KLSAgICBCb29sZWFuIHJlc3VsdDsKLSAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2Vz
ID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKLSAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLQotICAgIHNpemVfdCBjb3VudCA9IENG
QXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7Ci0gICAgVmVjdG9yPFJUQ05ldHdvcms6
OklQQWRkcmVzcz4gYWRkcmVzc2VzOwotICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGNvdW50KTsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsg
KytpbmRleCkgewotICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBhdXRvKiBh
ZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRh
dGFHZXRCeXRlUHRyKGRhdGEpKTsKLSAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChS
VENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy0+c2luX2FkZHIpKSk7
Ci0gICAgfQotICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKLX0KLQotTmV0d29y
a1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKLSAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpCitOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewogfQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6
On5OZXR3b3JrUlRDUmVzb2x2ZXIoKQogewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9v
cChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRN
b2RlKTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRy
KTsKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9y
OjpVbmtub3duKSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBT
dHJpbmcmIGFkZHJlc3MpCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCiB7Ci0gICAgbV9ob3N0ID0g
YWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNz
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRl
eHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhvc3RT
ZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBDRkhv
c3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgp
LCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3Rh
cnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1JUQ1Jlc29s
dmVyOjpzdG9wKCkKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25zdCBTdHJpbmcm
IGFkZHJlc3MpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgp
LCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7CisgICAgV2Vi
Q29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCB0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrUlRDUmVz
b2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRk
cmVzc2VzKQordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3AoKQogewotICAgIGlmIChhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CisgICAgV2ViQ29yZTo6c3RvcFJl
c29sdmVETlModGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
aAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li44MjRhOGZi
ZmZmY2RmNDg2NzA3ZGE1MzQyOTE2Mjg1ODFhODQ2OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAt
MjgsMzAgKzI4LDMxIEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdv
cmsuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisjaW5jbHVkZSAiV2ViQ29yZS9E
TlMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtS
VENSZXNvbHZlciB7CitjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgOiBwdWJsaWMgV2ViQ29yZTo6
RE5TUmVzb2x2ZU9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5r
bm93biwgQ2FuY2VsbGVkIH07CiAKLSAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0
ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRy
ZXNzPj4sIEVycm9yPjsKKyAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0gRXhwZWN0ZWQ8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPj4sIEVy
cm9yPjsKICAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBZGRyZXNzZXNPckVycm9yJiYpPjsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwog
Ci0gICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgp
OworICAgIHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOworICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCk7CiAKLSAgICB2b2lkIGNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRD
TmV0d29yazo6SVBBZGRyZXNzPiYpOworICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+JikgZmluYWw7CisgICAgdWludDY0X3QgZ2V0SWQoKSBmaW5hbCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH07CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CisgICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhh
bmRsZXI7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Rm
ZDYzMWNjN2JiNDAxMWZjNmI5OTRiYTJhOWY0ZGQ0ODVmMDMwMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VC
UlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9U
eXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgaWYgKGVycm9y
LT5kb21haW4pIHsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1
dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNf
Y2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSo+KGluZm8pOworCisgICAgQm9vbGVhbiByZXN1
bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9z
dEdldEFkZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7CisKKyAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2
ZWRBZGRyZXNzZXMpOworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsK
KyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZE
YXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRB
ZGRyZXNzZXMsIGluZGV4KTsKKyAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Cisg
ICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGFkZHJl
c3MpKTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRlZChhZGRyZXNzZXMpOworfQorCitO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3Qg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6
IE5ldHdvcmtSVENSZXNvbHZlcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKK3sKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6On5OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSgpCit7CisgICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwg
Q0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIENGSG9z
dFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hOjpzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7Cisg
ICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBDRkhvc3RDbGllbnRD
b250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsK
KyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0
KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIEJvb2xlYW4gcmVzdWx0
ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNz
ZXMsIG51bGxwdHIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2
b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdG9wKCkKK3sKKyAgICBDRkhvc3RDYW5jZWxJ
bmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVz
c2VzKTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0
aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVy
cm9yOjpDYW5jZWxsZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3
YmIzMTA4NWE2NTY2ZmUzYzBkM2FjMzFhYWEyYWIzNGYwMmExMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNv
Y29hLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
VVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgOiBwdWJsaWMgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EoKSBmaW5hbDsKKworICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZI
b3N0UmVmPiBtX2hvc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA2NzA1NWJkN2IzYzNkNGUzZDY1
YTM1ZDdjYzFlODE2Zjg1YTQyMzM3Li4wZjI2M2U5NDJkNTIxY2IzOTE4NDAwYmUzYjI2NzUwYjU0
N2Q1MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTM5LDYgKzM5LDggQEAgTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHRTb3VwLmNwcAogCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcAorCiBQbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5jcHAgQG5vLXVuaWZ5CiBQ
bGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjdlNTZhNGVmMDIzMWQ1Mzgx
NjEwMTk2MDdkMDgyMzU5MTg0YWZlLi5mZDMzNGZmNzgwYTA4NDUwNjhjZjJlYTA0YmViZTU5NjJm
NmFhNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTkxMiw2ICs5MTIsNyBAQAogCQk0MTA0ODJDRDFEREQzMjRDMDBGMDA2RDAgLyog
UlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi87IH07CiAJ
CTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAg
LyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMUIyMjYy
MUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMzA3NUE5
MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUExREU4NUYzMDAwMzlFQzY5
IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9u
aXRvci5jcHAgKi87IH07CkBAIC0zMjczLDYgKzMyNzQsOCBAQAogCQk0MTA0ODJDQzFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ3MUY5
RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZl
ci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyog
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExQjIyNjIxRTM3MTI0
NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5ODFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5oOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYyMDgsNiArNjIxMSw4IEBACiAJCQkJNDFEQzQ1OTgxRTNENkVENjAw
QjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTEyQjU0
NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLywKIAkJCQk0MTEy
QjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmggKi8sCisJCQkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLywK
KwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
aCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5j
cHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
aCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5t
ZXNzYWdlcy5pbiAqLywKQEAgLTEwNTQzLDYgKzEwNTQ4LDcgQEAKIAkJCQk0MURDNDU5NzFFM0Q2
RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJvdmlkZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8q
IE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTEyQjU1NTFGQTBF
QTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFEIC8qIE5ldHdvcmtSVENT
b2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzQUMxNkI0
QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICov
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334149</attachid>
            <date>2018-02-19 03:44:44 -0800</date>
            <delta_ts>2018-02-19 04:10:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180219124442.patch</filename>
            <type>text/plain</type>
            <size>80846</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMmZmMTZmZjU4YjZmYzhlODU4ZDFkMzg0MThhZTNl
NjA0YTY1NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6
OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBBZGQgdGhl
IG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDogTmV3IGNs
YXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRpbmcKKyAg
ICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93cyBzdG9w
cGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVy
Q2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBw
bGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBs
ZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJl
c29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdpdGggdGhlIHNvdXAgbGlicmFy
eS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKTog
U3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEgR0NhbmNlbGxhYmxl
LgorCiAyMDE4LTAyLTEyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IGRlZmVyIGZvY3VzZWRVSUVsZW1lbnQgbm90aWZpY2F0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA4NDFkODI2MTdiNWY4ZTE5ZGViMjBkZDRkZDJjNmM4ODllZTk0YzRmLi41M2ZiNGM0MmUx
ZjI2ZGFmYjU0ODQzMDRkYTE3MzU3NTU5MTkwZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNpZmljIENv
Y29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBjbGFzcywg
bWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGljIGFuZCBk
ZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNoIGVuY2Fw
c3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4gYWxpYXMg
Y2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUgcmVzb2x2
ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIp
OiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRkcmVzcyBj
bGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0YyBsaWJy
YXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5TIEFQSSB0
byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRl
ZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRo
ZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+
TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGlt
cGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0
aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcg
dGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBt
YWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlv
bi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0
aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBE
TlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2RzIGluIHRo
ZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3VyZSBhbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnku
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
Lmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDItMTIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0
cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3ZmZjZjJjOGQ3OGVkMGVjLi4y
YzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCi0gICAgcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1NzNjNmJkNTNhYmM0ODcwMTNh
NDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4YWYzODc4MWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZTUzZjBhOWE4
Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1MDY2M2ExZTQ1NTI4Yjc1OTYx
ODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcwNSw2ICsxNzA1LDcgQEAgcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZkNjFlZmRjODM4ZTkwOTlhMS4u
MjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZO
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMzZDY1NTVjMGFjMDI5NS4uOWYy
MTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5OSw2ICsyMTk5
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjA0OCw4ICsxMjA1MCw5IEBA
CiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29u
dGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRjhFMTMyMTI1
NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGMzRGRTUwRTgy
RjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
TlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYy
N0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzQzUwMEFCNzVBNkUw
MDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAw
Q0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJRTRBMDA3ODQxQjgyMEVEMzAw
MkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlFNEEwMDc4MjFCODIwRUM4MDAy
QzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmgg
Ki8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAg
Ki8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICov
LApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0VFNjg0NEUx
MkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNUYy
REJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUIyRjM0
RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJCQkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLywKKwkJCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLywKIAkJCQk3RUU2
ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi8sCiAJCQkJ
N0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCAqLywKIAkJ
CQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMx
QTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAw
RDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRG
RTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0VFNjg0NkYx
MkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZy
YWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4
IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2NmYuLmUzY2M5MDhjZGZhYWFl
N2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFr
ZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMx
YjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
UmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzY2MjBjNDViYjc1YzliYjc4N2Q3
OWI4ZDFkMTQ1MGNlNmZjNDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZURO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0
aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUs
IGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZURO
Uyh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuc3RvcFJlc29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjZiMzg2OWY0ZDNiMjFjNDIyNzEwNzFlZmUwNWI3MDU3M2MxZjJhZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7
CitwdWJsaWM6CisgICAgSVBBZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAg
Y29uc3Qgc3RydWN0IGluX2FkZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2lu
X2FkZHI7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsK
K307CisKK2VudW0gY2xhc3MgRE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2Vs
bGVkIH07CisKK3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNp
bmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5T
QWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxl
dGlvbkhhbmRsZXImKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcFJlc29sdmVETlModWludDY0
X3QgaWRlbnRpZmllcik7CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVm
NWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjc4ODcxZGVjYTFiMWQ1ZDI5NmZmNDYzNjljMDNjMDNk
NmRkY2I4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDYgKzI3LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTUyLDcgKzYwLDcgQEAgc3RhdGljIGNv
bnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZl
UXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwog
fQpAQCAtNjAsOCArNjgsNiBAQCBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKICAgICA6IG1fdGlt
ZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3Rz
SW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCi0gICAgLCBtX2xhc3RQcm94
eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2lsbCBy
ZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24KICAg
ICAvLyBwbGF0Zm9ybXMgdGhhdCBoYXZlIGFuIGFzeW5jaHJvbm91cyBpbXBsZW1lbnRhdGlvbiBv
ZiB1cGRhdGVJc1VzaW5nUHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlNSZXNvbHZlUXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQxYzA1YWJiMTg2NWQ3
ZTJiZDJlZjBiOGFhLi45ZjkxZDIzMGE5NzM3OTA1MGQ4NjAzM2VlNWM1MTY4MDFkZDRlMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgRE5TUmVzb2x2ZVF1ZXVlX2gKICNkZWZpbmUg
RE5TUmVzb2x2ZVF1ZXVlX2gKIAorI2luY2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOSwzMCAr
NDAsMzQgQEAgY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZSgpOwor
ICAgIHZpcnR1YWwgfkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBE
TlNSZXNvbHZlUXVldWUmIHNpbmdsZXRvbigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlv
bkhhbmRsZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAg
ICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVz
dHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0K
K3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAK
ICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAg
c3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQ
cm94eTsKLSAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOworICAg
IGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUgeyAwIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3
Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0
ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBt
X2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0
YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBo
dHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIiku
Y3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBw
cm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJv
eHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5n
ZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBo
dHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsK
LSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZh
bHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCho
dHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVO
b25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291
bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBz
UHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8
IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0
UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCop
Ci17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhy
ZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkg
bm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRD
RihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0
ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0Lmxl
YWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNr
KCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xp
ZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVh
a2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vs
c2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1
bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAg
IENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRj
aEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDkxYzI2MTcwYmIyNzZiMDFhZGEwNWMzYzNkNzgx
MTZhZWMxODI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJM
b2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9S
TShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2lu
Z1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdz
ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAo
IXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0g
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgp
OworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0Nv
cHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsK
KworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5
QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEg
JiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NG
UHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50
ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25h
cnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlBy
b3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1Vz
aW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRp
YyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwg
Y29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5n
bGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMg
YWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgw
LCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7Cisg
ICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Cisg
ICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2ls
bCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQor
ICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFp
bigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3
ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNs
aWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwor
I2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0
QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShj
b25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29s
dmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE4MDc4YzdiOWY1MmIyNWFmMDQy
ZWU1MjIxMTNlNGI1MDIyMWQwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUodWludDY0
X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNp
bmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1
cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFt
ZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODJjMGQ3
NjlkMmE2ZjczYTUzZDdkMmI3ZTBjZTI5OTUyYzJjYzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywg
dWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImIC8qIGNvbXBs
ZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVD
dXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGVjZGIxN2IzNTljZjQxYTVhMjc1Y2QxYjA1NTliODZkMDEyOGFj
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1
ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVy
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1
cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWQ0YmRjYjljNmM2
MDFjYjUyN2I3Mjc4YTAyNzU2Yzc1YzhmOGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0w
LDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIK
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluaXRpYWxseSB0
cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5
IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7CitzdGF0aWMg
Ym9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisKK3N0YXRpYyBib29sIGRpZFJlc29sdmVQ
cm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBw
cm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3Qg
aXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVm
ZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgLy8gcmVzb2x2
aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVk
IGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBj
b25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBh
cmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhl
ciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYg
c3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQ
cm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29s
KiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9y
ZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWlu
aW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94
eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBp
c1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09i
amVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNV
c2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgR1JlZlB0
cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0
UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNvbHZlcik7CisKKyAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlD
YWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworfQorCitzdGF0aWMgdm9pZCBy
ZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBz
dGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RhdGljX2Nhc3Q8RE5TQ29tcGxldGlvbkhhbmRsZXIqPihkYXRhKTsK
KworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spIHsKKyAgICAgICAgRE5TRXJyb3Ig
ZXJyb3IgPSBETlNFcnJvcjo6VW5rbm93bjsKKworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewor
ICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX0NBTlRfUkVTT0xWRToKKyAgICAgICAgICAgIGVycm9y
ID0gRE5TRXJyb3I6OkNhbnRSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBETlNFcnJvcjo6
Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09VUF9TVEFUVVNf
T0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfTsKKworICAgICAgICAoKmNvbXBsZXRpb25IYW5kbGVyKShtYWtlVW5leHBlY3Rl
ZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3VwX2FkZHJl
c3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1dG8qIGlwQWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9z
b2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAgICBhZGRyZXNzZXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3NbaV0pKTsKKworICAgICgqY29tcGxl
dGlvbkhhbmRsZXIpKHsgYWRkcmVzc2VzIH0pOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3Vw
TmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBu
dWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKK30KKwordm9pZCBETlNSZXNvbHZl
UXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNv
dXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2Fu
Y2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19j
b250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2Fu
Y2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssICZjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBtX2NhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX2NhbmNlbEhhbmRsZXJzLnRha2UoaWRlbnRp
ZmllcikpCisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkM2ViM2Zk
OWEyNTcxZWNmODc0YmVmMWFlNmZkNTA0NmMwMGFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1YmxpYyBE
TlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fY2FuY2VsSGFuZGxlcnM7Cit9OworCit1c2luZyBE
TlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZm
OGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0j
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3Vy
ZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgot
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiog
dXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVz
ZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBk
aXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1
c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1l
czogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9m
IHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNo
b3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWlu
ZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJz
aG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlz
LCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlS
ZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJv
eHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBw
cm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgp
KTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQ
cm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsK
LSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZp
c1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3Rh
dGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJv
eHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVR
dWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVy
PiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBT
ZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7
Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2Fz
eW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5
UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUu
Y29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1Vz
aW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNz
KiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVj
cmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNz
aW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVz
b2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICho
b3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIu
LjNkZTMxNDM0YWE2MzAzNTdkYjM2ZGNhZTkxYWQ3MThjMzk2MTA0MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNy
ZWF0ZVRocmVhZCgpCkBAIC0xNjQsMTMgKzE2OCwxOCBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRl
cjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5l
dHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgYXV0byByZXNvbHZlciA9IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKGlkZW50aWZpZXIs
IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5j
ZWxsZWQpCisgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJy
b3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSks
IGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKworICAgICAg
ICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0
byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7
IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVy
KTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZl
cnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
CmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjFiZmFmYTQ2
YjcyMGMzYzIyMTNhNzExY2M3YmRjNjZkMWFiNzcxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApA
QCAtMzIsNjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCBy
ZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBj
b25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKKy8vIEZJWE1FOiBVc2UgdGhl
IGZ1bmN0aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS4KKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpE
TlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9V
TlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewot
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90
IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtS
VENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJl
ZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9z
dFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAg
ICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAg
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAo
Q0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4
KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0
IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nl
cy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFk
ZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJl
c3Nlcyk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+KG5l
dyBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKIH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZl
cihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZl
cjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0Nv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZl
cigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNl
dENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVu
a25vd24pKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1l
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29s
dmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBtX2lkZW50aWZpZXIs
IG1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rv
cCgpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhv
c3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KLXZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2
ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1Zjc2MjcyYzU4MDJiY2IwM2Vh
YjczNjQxODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNyBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a1JUQ1Jlc29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwg
Q2FuY2VsbGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2
ZXI+IGNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmKTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJy
b3I+OwotICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0gICAgQ29tcGxldGlvbkhhbmRs
ZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7
Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkRO
U0NvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDJj
MzQ5NDgxMDY0Mzk1YTVkMWRiZTM2NjViYzJkM2Q4NDZlN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJS
VEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5
cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQorewor
ICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7CisKKyAgICBBU1NFUlQoaW5m
byk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSo+KGluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAgICAgICAgLy8gRklY
TUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0
aGUgY2FsbGJhY2suCisgICAgICAgIHJlc29sdmVyLT5jb21wbGV0ZWQobWFrZVVuZXhwZWN0ZWQo
RE5TUmVzb2x2ZU9ic2VydmVyOjpFcnJvcjo6VW5rbm93bikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgQm9vbGVhbiByZXN1bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJl
c3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBzaXplX3QgY291bnQg
PSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOworICAgIFZlY3RvcjxXZWJDb3Jl
OjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShjb3VudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7
ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKKyAgICAgICAgYXV0byog
YWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZE
YXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQo
V2ViQ29yZTo6SVBBZGRyZXNzKCphZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29sdmVyLT5jb21w
bGV0ZWQoeyBhZGRyZXNzZXMgfSk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50aWZp
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVk
dWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0
KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENy
ZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hvc3Qu
Z2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1
bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZh
dWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9u
KG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6
OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwg
Q0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDM2NjhhYzVmODcwNjViYTdkYTA1YWE4ZjFiMTU2
YTVlZjFkNDlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAi
TmV0d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mgd2hlbiB3
ZSBjb21wbGV0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LgorY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya1JU
Q1Jlc29sdmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YSh1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB+TmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EoKSBmaW5hbDsKKworICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5n
JiBhZGRyZXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAg
ICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA2NzA1
NWJkN2IzYzNkNGUzZDY1YTM1ZDdjYzFlODE2Zjg1YTQyMzM3Li4wZjI2M2U5NDJkNTIxY2IzOTE4
NDAwYmUzYjI2NzUwYjU0N2Q1MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTM5LDYgKzM5LDgg
QEAgTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAogCitOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcAorCiBQbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5j
cHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAgQG5vLXVu
aWZ5CiBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgQG5vLXVuaWZ5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjdl
NTZhNGVmMDIzMWQ1MzgxNjEwMTk2MDdkMDgyMzU5MTg0YWZlLi5mZDMzNGZmNzgwYTA4NDUwNjhj
ZjJlYTA0YmViZTU5NjJmNmFhNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMiw2ICs5MTIsNyBAQAogCQk0MTA0ODJDRDFEREQz
MjRDMDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29y
ay5jcHAgKi87IH07CiAJCTQxMDQ4MkNFMURERDMyNEYwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTA0ODJDQzFE
REQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovOyB9OwogCQk0MTEyQjU1NTFGQTBFQTdB
MDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3
b3JrUlRDUmVzb2x2ZXIuY3BwICovOyB9OworCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyog
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmNwcCAqLzsgfTsKIAkJNDExQjIyNjQxRTM3MUJBNjAwNEY3MzYzIC8qIExp
YldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi87
IH07CiAJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTk4MURF
ODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLzsgfTsKIAkJNDEzMDc1QUEx
REU4NUYzMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NTlBMURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgKi87IH07CkBAIC0zMjczLDYgKzMyNzQsOCBAQAogCQk0
MTA0ODJDQzFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmNw
cDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyog
TmV0d29ya1JUQ1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5l
dHdvcmtSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0NzFGOUZE
M0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDTmV0d29yay5oOyBwYXRoID0gTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0LmNwcDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtS
VENTb2NrZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Nv
Y2tldC5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDgsNiArNjIxMSw4IEBACiAJCQkJNDFE
QzQ1OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAq
LywKIAkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNw
cCAqLywKIAkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVy
LmggKi8sCisJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCAqLywKKwkJCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuaCAqLywKIAkJCQk0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0
d29ya1JUQ1NvY2tldC5jcHAgKi8sCiAJCQkJNDEzMDc1OTkxREU4NEZCMDAwMzlFQzY5IC8qIE5l
dHdvcmtSVENTb2NrZXQuaCAqLywKIAkJCQk0MTMwNzU5RDFERTg0RkIwMDAzOUVDNjkgLyogTmV0
d29ya1JUQ1NvY2tldC5tZXNzYWdlcy5pbiAqLywKQEAgLTEwNTQzLDYgKzEwNTQ4LDcgQEAKIAkJ
CQk0MURDNDU5NzFFM0Q2RTIyMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRSAvKiBOZXR3b3JrUlRDUHJv
dmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDExMkI1NTUxRkEw
RUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtS
VENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFE
IC8qIE5ldHdvcmtSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM4MjgzQUMxNkI0QkYzRjAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5t
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDU0ODJhYTQ5YmRkMzAzMzlkZjhhZGNmNWNkNmY1NGQ0ODhhOTRmNzkuLjM3
ODgxYjFiYmFkNWExODE0ZDQwM2NkZDRiOTk5YmQ0NGQwZmViMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0w
Mi0xOSAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBN
YWtlIE5ldHdvcmtSVENSZXNvbHZlciBwb3J0IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg4NTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcgdW5pdCB0ZXN0cyBmb3IgaGUg
cmVzb2x2ZSBhbmQgc3RvcFJlc29sdmUgZnVuY3Rpb25zLiBXZSBuZWVkIHRvIGNvbXBpbGUgdGhl
bSBmb3IgdGhlCisgICAgICAgIG90aGVyIHBsYXRmb3JtcyB3aGVuIHRoZSBBUElzIGFyZSBzdXBw
b3J0ZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwOgorCiAyMDE4LTAyLTEy
ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNl
IExvYWQgU3RhdGlzdGljczogQ2xhc3NpZnkgcmVzb3VyY2VzIGFzIHByZXZhbGVudCBiYXNlZCBv
biByZWRpcmVjdHMgdG8gb3RoZXIgcHJldmFsZW50IHJlc291cmNlcwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
UGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNGFlZjY5NTNjZDE2MTRiZjZjZjAzY2UyMjQ4YWZiM2M2
ZDJkZTVmOC4uNjIwMmY0NmJhZjBiMzM3ODVjODVjYWQ3MmM2YjI4MzNiZTg4N2Q0MyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04Nyw2ICs4Nyw3IEBAIGFkZF9leGVj
dXRhYmxlKFRlc3RXZWJDb3JlCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHNDb250cm9s
bGVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvQ1NTUGFyc2Vy
LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRE5T
LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3Iu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvR3JpZFBvc2l0aW9uLmNw
cApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YTc3ZGE3YTJjMGE1NzU0ZWEwZGU1ZWRmMDc2Yjc1YmFmOGRjY2FlCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKQEAgLTAsMCArMSwx
MDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhLCBTLkwuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlV0
aWxpdGllcy5oIgorI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgorCisjaW5jbHVkZSA8
V2ViQ29yZS9ETlMuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitib29sIGRv
bmUgPSBmYWxzZTsKKworVEVTVChETlNUZXN0LCBjYW5jZWxSZXNvbHZlRE5TKQoreworICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgY29uc3QgU3RyaW5nIGhvc3Ru
YW1lID0gU3RyaW5nKCJ3d3cud2Via2l0Lm9yZyIpOworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIg
PSAxOworCisgICAgRE5TQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIgPSBbXShX
ZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisKKyAgICAgICAgQVNTRVJUX0ZBTFNFKHJlc3VsdC5oYXNfdmFsdWUoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5lcnJvcigpID09IFdlYkNvcmU6OkROU0Vycm9y
OjpDYW5jZWxsZWQpOworCisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9uZSA9IGZh
bHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICBzdG9wUmVzb2x2ZUROUyhpZGVudGlmaWVyKTsKKyAgICBVdGlsOjpydW4oJmRv
bmUpOworfQorCitURVNUKEROU1Rlc3QsIGNhbnRSZXNvbHZlRE5TKQoreworICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgY29uc3QgU3RyaW5nIGhvc3RuYW1lID0g
U3RyaW5nKCJub3RhdmFsaWRkb21haW4ubm90YXZhbGlkZG9tYWluIik7CisgICAgdWludDY0X3Qg
aWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFu
ZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUg
eworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfRkFMU0UocmVzdWx0Lmhh
c192YWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocmVzdWx0LmVycm9yKCkgPT0gV2ViQ29y
ZTo6RE5TRXJyb3I6OkNhbnRSZXNvbHZlKTsKKworICAgICAgICByZXR1cm47CisgICAgfTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICByZXNvbHZlRE5TKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChETlNU
ZXN0LCByZXNvbHZlRE5TKQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgp
OworCisgICAgY29uc3QgU3RyaW5nIGhvc3RuYW1lID0gU3RyaW5nKCJ3d3cud2Via2l0Lm9yZyIp
OworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAxOworCisgICAgRE5TQ29tcGxldGlvbkhhbmRs
ZXIgY29tcGxldGlvbkhhbmRsZXIgPSBbXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisKKyAgICAgICAgQVNTRVJU
X1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsKKworICAgICAgICByZXR1cm47CisgICAgfTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICByZXNvbHZlRE5TKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334150</attachid>
            <date>2018-02-19 04:10:16 -0800</date>
            <delta_ts>2018-02-19 04:29:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180219131014.patch</filename>
            <type>text/plain</type>
            <size>80839</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMmZmMTZmZjU4YjZmYzhlODU4ZDFkMzg0MThhZTNl
NjA0YTY1NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6
OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBBZGQgdGhl
IG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDogTmV3IGNs
YXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRpbmcKKyAg
ICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93cyBzdG9w
cGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVy
Q2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBw
bGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBs
ZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJl
c29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdpdGggdGhlIHNvdXAgbGlicmFy
eS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKTog
U3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEgR0NhbmNlbGxhYmxl
LgorCiAyMDE4LTAyLTEyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IGRlZmVyIGZvY3VzZWRVSUVsZW1lbnQgbm90aWZpY2F0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA4NDFkODI2MTdiNWY4ZTE5ZGViMjBkZDRkZDJjNmM4ODllZTk0YzRmLi41M2ZiNGM0MmUx
ZjI2ZGFmYjU0ODQzMDRkYTE3MzU3NTU5MTkwZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNpZmljIENv
Y29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBjbGFzcywg
bWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGljIGFuZCBk
ZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNoIGVuY2Fw
c3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4gYWxpYXMg
Y2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUgcmVzb2x2
ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIp
OiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRkcmVzcyBj
bGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0YyBsaWJy
YXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5TIEFQSSB0
byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRl
ZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRo
ZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+
TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGlt
cGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0
aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcg
dGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBt
YWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlv
bi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0
aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBE
TlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2RzIGluIHRo
ZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3VyZSBhbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnku
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
Lmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDItMTIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0
cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3ZmZjZjJjOGQ3OGVkMGVjLi4y
YzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCi0gICAgcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1NzNjNmJkNTNhYmM0ODcwMTNh
NDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4YWYzODc4MWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZTUzZjBhOWE4
Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1MDY2M2ExZTQ1NTI4Yjc1OTYx
ODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcwNSw2ICsxNzA1LDcgQEAgcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZkNjFlZmRjODM4ZTkwOTlhMS4u
MjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZO
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMzZDY1NTVjMGFjMDI5NS4uOWYy
MTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5OSw2ICsyMTk5
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjA0OCw4ICsxMjA1MCw5IEBA
CiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29u
dGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRjhFMTMyMTI1
NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGMzRGRTUwRTgy
RjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
TlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYy
N0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzQzUwMEFCNzVBNkUw
MDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAw
Q0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJRTRBMDA3ODQxQjgyMEVEMzAw
MkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlFNEEwMDc4MjFCODIwRUM4MDAy
QzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmgg
Ki8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAg
Ki8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICov
LApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0VFNjg0NEUx
MkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNUYy
REJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUIyRjM0
RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJCQkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLywKKwkJCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLywKIAkJCQk3RUU2
ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi8sCiAJCQkJ
N0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCAqLywKIAkJ
CQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMx
QTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAw
RDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRG
RTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0VFNjg0NkYx
MkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZy
YWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4
IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2NmYuLmUzY2M5MDhjZGZhYWFl
N2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFr
ZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMx
YjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
UmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzY2MjBjNDViYjc1YzliYjc4N2Q3
OWI4ZDFkMTQ1MGNlNmZjNDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZURO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0
aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUs
IGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZURO
Uyh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuc3RvcFJlc29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjZiMzg2OWY0ZDNiMjFjNDIyNzEwNzFlZmUwNWI3MDU3M2MxZjJhZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7
CitwdWJsaWM6CisgICAgSVBBZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAg
Y29uc3Qgc3RydWN0IGluX2FkZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2lu
X2FkZHI7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsK
K307CisKK2VudW0gY2xhc3MgRE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2Vs
bGVkIH07CisKK3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNp
bmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5T
QWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxl
dGlvbkhhbmRsZXImKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcFJlc29sdmVETlModWludDY0
X3QgaWRlbnRpZmllcik7CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVm
NWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjc4ODcxZGVjYTFiMWQ1ZDI5NmZmNDYzNjljMDNjMDNk
NmRkY2I4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDYgKzI3LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTUyLDcgKzYwLDcgQEAgc3RhdGljIGNv
bnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZl
UXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwog
fQpAQCAtNjAsOCArNjgsNiBAQCBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKICAgICA6IG1fdGlt
ZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3Rz
SW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCi0gICAgLCBtX2xhc3RQcm94
eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2lsbCBy
ZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24KICAg
ICAvLyBwbGF0Zm9ybXMgdGhhdCBoYXZlIGFuIGFzeW5jaHJvbm91cyBpbXBsZW1lbnRhdGlvbiBv
ZiB1cGRhdGVJc1VzaW5nUHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlNSZXNvbHZlUXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQxYzA1YWJiMTg2NWQ3
ZTJiZDJlZjBiOGFhLi45ZjkxZDIzMGE5NzM3OTA1MGQ4NjAzM2VlNWM1MTY4MDFkZDRlMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgRE5TUmVzb2x2ZVF1ZXVlX2gKICNkZWZpbmUg
RE5TUmVzb2x2ZVF1ZXVlX2gKIAorI2luY2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOSwzMCAr
NDAsMzQgQEAgY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZSgpOwor
ICAgIHZpcnR1YWwgfkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBE
TlNSZXNvbHZlUXVldWUmIHNpbmdsZXRvbigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlv
bkhhbmRsZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAg
ICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVz
dHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0K
K3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAK
ICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAg
c3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQ
cm94eTsKLSAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOworICAg
IGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUgeyAwIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3
Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0
ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBt
X2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0
YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBo
dHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIiku
Y3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBw
cm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJv
eHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5n
ZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBo
dHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsK
LSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZh
bHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCho
dHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVO
b25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291
bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBz
UHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8
IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0
UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCop
Ci17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhy
ZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkg
bm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRD
RihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0
ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0Lmxl
YWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNr
KCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xp
ZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVh
a2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vs
c2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1
bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAg
IENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRj
aEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDkxYzI2MTcwYmIyNzZiMDFhZGEwNWMzYzNkNzgx
MTZhZWMxODI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJM
b2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9S
TShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2lu
Z1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdz
ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAo
IXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0g
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgp
OworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0Nv
cHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsK
KworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5
QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEg
JiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NG
UHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50
ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25h
cnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlBy
b3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1Vz
aW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRp
YyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwg
Y29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5n
bGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMg
YWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgw
LCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7Cisg
ICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Cisg
ICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2ls
bCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQor
ICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFp
bigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3
ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNs
aWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwor
I2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0
QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShj
b25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29s
dmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE4MDc4YzdiOWY1MmIyNWFmMDQy
ZWU1MjIxMTNlNGI1MDIyMWQwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUodWludDY0
X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNp
bmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1
cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFt
ZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODJjMGQ3
NjlkMmE2ZjczYTUzZDdkMmI3ZTBjZTI5OTUyYzJjYzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywg
dWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImIC8qIGNvbXBs
ZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVD
dXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGVjZGIxN2IzNTljZjQxYTVhMjc1Y2QxYjA1NTliODZkMDEyOGFj
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1
ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVy
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1
cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWQ0YmRjYjljNmM2
MDFjYjUyN2I3Mjc4YTAyNzU2Yzc1YzhmOGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0w
LDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIK
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluaXRpYWxseSB0
cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5
IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7CitzdGF0aWMg
Ym9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisKK3N0YXRpYyBib29sIGRpZFJlc29sdmVQ
cm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBw
cm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3Qg
aXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVm
ZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgLy8gcmVzb2x2
aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVk
IGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBj
b25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBh
cmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhl
ciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYg
c3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQ
cm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29s
KiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9y
ZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWlu
aW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94
eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBp
c1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09i
amVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNV
c2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgR1JlZlB0
cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0
UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNvbHZlcik7CisKKyAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlD
YWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworfQorCitzdGF0aWMgdm9pZCBy
ZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBz
dGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RhdGljX2Nhc3Q8RE5TQ29tcGxldGlvbkhhbmRsZXIqPihkYXRhKTsK
KworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spIHsKKyAgICAgICAgRE5TRXJyb3Ig
ZXJyb3IgPSBETlNFcnJvcjo6VW5rbm93bjsKKworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewor
ICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX0NBTlRfUkVTT0xWRToKKyAgICAgICAgICAgIGVycm9y
ID0gRE5TRXJyb3I6OkNhbnRSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBETlNFcnJvcjo6
Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09VUF9TVEFUVVNf
T0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfTsKKworICAgICAgICAoKmNvbXBsZXRpb25IYW5kbGVyKShtYWtlVW5leHBlY3Rl
ZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3VwX2FkZHJl
c3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1dG8qIGlwQWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9z
b2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAgICBhZGRyZXNzZXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3NbaV0pKTsKKworICAgICgqY29tcGxl
dGlvbkhhbmRsZXIpKHsgYWRkcmVzc2VzIH0pOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3Vw
TmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBu
dWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKK30KKwordm9pZCBETlNSZXNvbHZl
UXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNv
dXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2Fu
Y2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19j
b250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2Fu
Y2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssICZjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBtX2NhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX2NhbmNlbEhhbmRsZXJzLnRha2UoaWRlbnRp
ZmllcikpCisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkM2ViM2Zk
OWEyNTcxZWNmODc0YmVmMWFlNmZkNTA0NmMwMGFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1YmxpYyBE
TlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fY2FuY2VsSGFuZGxlcnM7Cit9OworCit1c2luZyBE
TlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZm
OGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0j
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3Vy
ZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgot
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiog
dXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVz
ZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBk
aXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1
c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1l
czogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9m
IHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNo
b3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWlu
ZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJz
aG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlz
LCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlS
ZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJv
eHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBw
cm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgp
KTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQ
cm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsK
LSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZp
c1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3Rh
dGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJv
eHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVR
dWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVy
PiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBT
ZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7
Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2Fz
eW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5
UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUu
Y29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1Vz
aW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNz
KiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVj
cmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNz
aW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVz
b2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICho
b3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIu
LjNkZTMxNDM0YWE2MzAzNTdkYjM2ZGNhZTkxYWQ3MThjMzk2MTA0MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNy
ZWF0ZVRocmVhZCgpCkBAIC0xNjQsMTMgKzE2OCwxOCBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRl
cjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5l
dHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgYXV0byByZXNvbHZlciA9IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKGlkZW50aWZpZXIs
IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5j
ZWxsZWQpCisgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJy
b3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSks
IGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKworICAgICAg
ICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0
byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7
IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVy
KTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZl
cnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
CmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjFiZmFmYTQ2
YjcyMGMzYzIyMTNhNzExY2M3YmRjNjZkMWFiNzcxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApA
QCAtMzIsNjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCBy
ZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBj
b25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKKy8vIEZJWE1FOiBVc2UgdGhl
IGZ1bmN0aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS4KKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpE
TlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9V
TlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewot
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90
IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtS
VENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJl
ZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9z
dFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAg
ICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAg
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAo
Q0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4
KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0
IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nl
cy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFk
ZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJl
c3Nlcyk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+KG5l
dyBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKIH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZl
cihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZl
cjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0Nv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZl
cigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNl
dENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVu
a25vd24pKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1l
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29s
dmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBtX2lkZW50aWZpZXIs
IG1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rv
cCgpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhv
c3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KLXZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2
ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1Zjc2MjcyYzU4MDJiY2IwM2Vh
YjczNjQxODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNyBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a1JUQ1Jlc29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwg
Q2FuY2VsbGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2
ZXI+IGNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmKTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJy
b3I+OwotICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0gICAgQ29tcGxldGlvbkhhbmRs
ZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7
Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkRO
U0NvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDUy
ZGQ5NTEzMmU2MWMzOWFiYTdjNjU0NDI2ZDI3NWE3OTU2YzI3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJS
VEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5
cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQorewor
ICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7CisKKyAgICBBU1NFUlQoaW5m
byk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSo+KGluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAgICAgICAgLy8gRklY
TUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0
aGUgY2FsbGJhY2suCisgICAgICAgIHJlc29sdmVyLT5jb21wbGV0ZWQobWFrZVVuZXhwZWN0ZWQo
RE5TRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEJvb2xl
YW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJl
ZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50
KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiBhZGRy
ZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisg
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAg
ICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJl
c29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0
YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVz
cygqYWRkcmVzcykpOworICAgIH0KKyAgICByZXNvbHZlci0+Y29tcGxldGVkKHsgYWRkcmVzc2Vz
IH0pOworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6TmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EodWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICA6IE5ldHdvcmtSVENSZXNvbHZlcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKK3sKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6On5OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYSgpCit7CisgICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29w
KG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUpOworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIp
OworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdGFydChjb25zdCBTdHJpbmcm
IGFkZHJlc3MpCit7CisgICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAg
ICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIgfTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCByZXNvbHZl
ZE5hbWUsICZjb250ZXh0KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKG1faG9zdC5n
ZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAg
IEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCks
IGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpzdG9wKCkKK3sKKyAg
ICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBl
OjprQ0ZIb3N0QWRkcmVzc2VzKTsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKEROU0Vycm9yOjpDYW5jZWxsZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmE3MDNjY2VhNjM2MmRhNmNiNzc4Nzc4NjlmYTg1MTg3NTEwOTFhOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENS
ZXNvbHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIHdoZW4gd2UgY29tcGxldGUg
dGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlNSZXNvbHZlUXVldWVDRk5ldC4KK2NsYXNzIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3Qg
aWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJiYpOworICAgIH5OZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYSgpIGZpbmFsOworCisgICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJl
c3MpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworCitwcml2YXRlOgorICAgIFJldGFp
blB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IDY3MDU1YmQ3YjNj
M2Q0ZTNkNjVhMzVkN2NjMWU4MTZmODVhNDIzMzcuLjBmMjYzZTk0MmQ1MjFjYjM5MTg0MDBiZTNi
MjY3NTBiNTQ3ZDUwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMzksNiArMzksOCBAQCBOZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKK05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwCisKIFBsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcCBAbm8t
dW5pZnkKIFBsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcCBAbm8tdW5pZnkKIFBs
YXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiN2U1NmE0ZWYw
MjMxZDUzODE2MTAxOTYwN2QwODIzNTkxODRhZmUuLmZkMzM0ZmY3ODBhMDg0NTA2OGNmMmVhMDRi
ZWJlNTk2MmY2YWE2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTEyLDYgKzkxMiw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYw
MDZEMCAvKiBSVENOZXR3b3JrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAq
LzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUw
MEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3
NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgKi87IH07CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRD
TmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJ
NDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMw
MDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdv
cmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMyNzMsNiArMzI3NCw4IEBACiAJCTQxMDQ4MkND
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JU
Q1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2
MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3
NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIwOCw2ICs2MjExLDggQEAKIAkJCQk0MURDNDU5ODFF
M0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJ
CTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAog
CQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywK
KwkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwICovLAorCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oICovLAogCQkJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5oICovLAogCQkJCTQxMzA3NTlEMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0Lm1lc3NhZ2VzLmluICovLApAQCAtMTA1NDMsNiArMTA1NDgsNyBAQAogCQkJCTQxREM0
NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBF
Njc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJC
NTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0
d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgy
ODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNTQ4MmFhNDliZGQzMDMzOWRmOGFkY2Y1Y2Q2ZjU0ZDQ4OGE5NGY3OS4uMzc4ODFiMWJi
YWQ1YTE4MTRkNDAzY2RkNGI5OTliZDQ0ZDBmZWIwZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAyLTE5ICBB
bGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0
d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB1bml0IHRlc3RzIGZvciBoZSByZXNvbHZl
IGFuZCBzdG9wUmVzb2x2ZSBmdW5jdGlvbnMuIFdlIG5lZWQgdG8gY29tcGlsZSB0aGVtIGZvciB0
aGUKKyAgICAgICAgb3RoZXIgcGxhdGZvcm1zIHdoZW4gdGhlIEFQSXMgYXJlIHN1cHBvcnRlZC4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHA6CisKIDIwMTgtMDItMTIgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBT
dGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGly
ZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCA0YWVmNjk1M2NkMTYxNGJmNmNmMDNjZTIyNDhhZmIzYzZkMmRlNWY4
Li42MjAyZjQ2YmFmMGIzMzc4NWM4NWNhZDcyYzZiMjgzM2JlODg3ZDQzIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTg3LDYgKzg3LDcgQEAgYWRkX2V4ZWN1dGFibGUo
VGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9DU1NQYXJzZXIuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9ETlMuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9HcmlkUG9zaXRpb24uY3BwCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNzdkYTdh
MmMwYTU3NTRlYTBkZTVlZGYwNzZiNzViYWY4ZGNjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcApAQCAtMCwwICsxLDEwNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVXRpbGl0aWVz
LmgiCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L0ROUy5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0
Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2Jvb2wgZG9uZSA9IGZh
bHNlOworCitURVNUKEROU1Rlc3QsIGNhbmNlbFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBT
dHJpbmcoInd3dy53ZWJraXQub3JnIik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IDE7CisK
KyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6
OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBkb25lID0g
dHJ1ZTsKKworICAgICAgICBBU1NFUlRfRkFMU0UocmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUocmVzdWx0LmVycm9yKCkgPT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNl
bGxlZCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgcmVzb2x2ZUROUyhob3N0bmFtZSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHN0b3BSZXNvbHZlRE5TKGlkZW50aWZpZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9
CisKK1RFU1QoRE5TVGVzdCwgY2FudFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlh
bGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmco
Im5vdGF2YWxpZGRvbWFpbi5ub3RhdmFsaWRkb21haW4iKTsKKyAgICB1aW50NjRfdCBpZGVudGlm
aWVyID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0g
W10oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVl
KCkpOworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNF
cnJvcjo6Q2FudFJlc29sdmUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9u
ZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKEROU1Rlc3QsIHJl
c29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAg
ICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53ZWJraXQub3JnIik7CisgICAg
dWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfVFJVRShy
ZXN1bHQuaGFzX3ZhbHVlKCkpOworCisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9u
ZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334152</attachid>
            <date>2018-02-19 04:29:38 -0800</date>
            <delta_ts>2018-02-19 04:54:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180219132936.patch</filename>
            <type>text/plain</type>
            <size>80875</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMmZmMTZmZjU4YjZmYzhlODU4ZDFkMzg0MThhZTNl
NjA0YTY1NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6
OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBBZGQgdGhl
IG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDogTmV3IGNs
YXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRpbmcKKyAg
ICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93cyBzdG9w
cGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVy
Q2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBw
bGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBs
ZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJl
c29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdpdGggdGhlIHNvdXAgbGlicmFy
eS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKTog
U3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEgR0NhbmNlbGxhYmxl
LgorCiAyMDE4LTAyLTEyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IGRlZmVyIGZvY3VzZWRVSUVsZW1lbnQgbm90aWZpY2F0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA4NDFkODI2MTdiNWY4ZTE5ZGViMjBkZDRkZDJjNmM4ODllZTk0YzRmLi41M2ZiNGM0MmUx
ZjI2ZGFmYjU0ODQzMDRkYTE3MzU3NTU5MTkwZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNpZmljIENv
Y29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBjbGFzcywg
bWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGljIGFuZCBk
ZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNoIGVuY2Fw
c3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4gYWxpYXMg
Y2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUgcmVzb2x2
ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIp
OiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRkcmVzcyBj
bGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0YyBsaWJy
YXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5TIEFQSSB0
byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRl
ZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRo
ZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+
TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGlt
cGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0
aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcg
dGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBt
YWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlv
bi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0
aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBE
TlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2RzIGluIHRo
ZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3VyZSBhbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnku
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
Lmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDItMTIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0
cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3ZmZjZjJjOGQ3OGVkMGVjLi4y
YzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCi0gICAgcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1NzNjNmJkNTNhYmM0ODcwMTNh
NDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4YWYzODc4MWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZTUzZjBhOWE4
Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1MDY2M2ExZTQ1NTI4Yjc1OTYx
ODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcwNSw2ICsxNzA1LDcgQEAgcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZkNjFlZmRjODM4ZTkwOTlhMS4u
MjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZO
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMzZDY1NTVjMGFjMDI5NS4uOWYy
MTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5OSw2ICsyMTk5
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjA0OCw4ICsxMjA1MCw5IEBA
CiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29u
dGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRjhFMTMyMTI1
NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGMzRGRTUwRTgy
RjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
TlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYy
N0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzQzUwMEFCNzVBNkUw
MDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAw
Q0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJRTRBMDA3ODQxQjgyMEVEMzAw
MkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlFNEEwMDc4MjFCODIwRUM4MDAy
QzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmgg
Ki8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAg
Ki8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICov
LApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0VFNjg0NEUx
MkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNUYy
REJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUIyRjM0
RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJCQkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLywKKwkJCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLywKIAkJCQk3RUU2
ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi8sCiAJCQkJ
N0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCAqLywKIAkJ
CQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMx
QTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAw
RDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRG
RTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0VFNjg0NkYx
MkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZy
YWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4
IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2NmYuLmUzY2M5MDhjZGZhYWFl
N2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFr
ZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMx
YjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
UmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzY2MjBjNDViYjc1YzliYjc4N2Q3
OWI4ZDFkMTQ1MGNlNmZjNDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZURO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0
aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUs
IGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZURO
Uyh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuc3RvcFJlc29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjZiMzg2OWY0ZDNiMjFjNDIyNzEwNzFlZmUwNWI3MDU3M2MxZjJhZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7
CitwdWJsaWM6CisgICAgSVBBZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAg
Y29uc3Qgc3RydWN0IGluX2FkZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2lu
X2FkZHI7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsK
K307CisKK2VudW0gY2xhc3MgRE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2Vs
bGVkIH07CisKK3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNp
bmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5T
QWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxl
dGlvbkhhbmRsZXImKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcFJlc29sdmVETlModWludDY0
X3QgaWRlbnRpZmllcik7CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVm
NWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjc4ODcxZGVjYTFiMWQ1ZDI5NmZmNDYzNjljMDNjMDNk
NmRkY2I4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDYgKzI3LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTUyLDcgKzYwLDcgQEAgc3RhdGljIGNv
bnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZl
UXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwog
fQpAQCAtNjAsOCArNjgsNiBAQCBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKICAgICA6IG1fdGlt
ZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3Rz
SW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCi0gICAgLCBtX2xhc3RQcm94
eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2lsbCBy
ZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24KICAg
ICAvLyBwbGF0Zm9ybXMgdGhhdCBoYXZlIGFuIGFzeW5jaHJvbm91cyBpbXBsZW1lbnRhdGlvbiBv
ZiB1cGRhdGVJc1VzaW5nUHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlNSZXNvbHZlUXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQxYzA1YWJiMTg2NWQ3
ZTJiZDJlZjBiOGFhLi45ZjkxZDIzMGE5NzM3OTA1MGQ4NjAzM2VlNWM1MTY4MDFkZDRlMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgRE5TUmVzb2x2ZVF1ZXVlX2gKICNkZWZpbmUg
RE5TUmVzb2x2ZVF1ZXVlX2gKIAorI2luY2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOSwzMCAr
NDAsMzQgQEAgY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZSgpOwor
ICAgIHZpcnR1YWwgfkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBE
TlNSZXNvbHZlUXVldWUmIHNpbmdsZXRvbigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlv
bkhhbmRsZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAg
ICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVz
dHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0K
K3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAK
ICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAg
c3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQ
cm94eTsKLSAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOworICAg
IGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUgeyAwIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3
Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0
ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBt
X2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0
YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBo
dHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIiku
Y3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBw
cm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJv
eHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5n
ZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBo
dHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsK
LSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZh
bHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCho
dHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVO
b25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291
bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBz
UHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8
IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0
UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCop
Ci17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhy
ZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkg
bm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRD
RihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0
ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0Lmxl
YWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNr
KCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xp
ZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVh
a2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vs
c2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1
bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAg
IENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRj
aEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDkxYzI2MTcwYmIyNzZiMDFhZGEwNWMzYzNkNzgx
MTZhZWMxODI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJM
b2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9S
TShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2lu
Z1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdz
ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAo
IXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0g
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgp
OworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0Nv
cHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsK
KworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5
QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEg
JiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NG
UHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50
ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25h
cnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlBy
b3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1Vz
aW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRp
YyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwg
Y29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5n
bGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMg
YWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgw
LCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7Cisg
ICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Cisg
ICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2ls
bCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQor
ICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFp
bigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3
ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNs
aWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwor
I2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0
QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShj
b25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29s
dmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE4MDc4YzdiOWY1MmIyNWFmMDQy
ZWU1MjIxMTNlNGI1MDIyMWQwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUodWludDY0
X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNp
bmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1
cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFt
ZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODJjMGQ3
NjlkMmE2ZjczYTUzZDdkMmI3ZTBjZTI5OTUyYzJjYzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywg
dWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImIC8qIGNvbXBs
ZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVD
dXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGVjZGIxN2IzNTljZjQxYTVhMjc1Y2QxYjA1NTliODZkMDEyOGFj
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1
ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVy
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1
cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWQ0YmRjYjljNmM2
MDFjYjUyN2I3Mjc4YTAyNzU2Yzc1YzhmOGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0w
LDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIK
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluaXRpYWxseSB0
cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5
IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7CitzdGF0aWMg
Ym9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisKK3N0YXRpYyBib29sIGRpZFJlc29sdmVQ
cm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBw
cm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3Qg
aXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVm
ZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgLy8gcmVzb2x2
aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVk
IGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBj
b25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBh
cmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhl
ciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYg
c3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQ
cm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29s
KiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9y
ZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWlu
aW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94
eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBp
c1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09i
amVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNV
c2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgR1JlZlB0
cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0
UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNvbHZlcik7CisKKyAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlD
YWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworfQorCitzdGF0aWMgdm9pZCBy
ZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBz
dGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RhdGljX2Nhc3Q8RE5TQ29tcGxldGlvbkhhbmRsZXIqPihkYXRhKTsK
KworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spIHsKKyAgICAgICAgRE5TRXJyb3Ig
ZXJyb3IgPSBETlNFcnJvcjo6VW5rbm93bjsKKworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewor
ICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX0NBTlRfUkVTT0xWRToKKyAgICAgICAgICAgIGVycm9y
ID0gRE5TRXJyb3I6OkNhbnRSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBETlNFcnJvcjo6
Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09VUF9TVEFUVVNf
T0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfTsKKworICAgICAgICAoKmNvbXBsZXRpb25IYW5kbGVyKShtYWtlVW5leHBlY3Rl
ZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3VwX2FkZHJl
c3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1dG8qIGlwQWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9z
b2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAgICBhZGRyZXNzZXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3NbaV0pKTsKKworICAgICgqY29tcGxl
dGlvbkhhbmRsZXIpKHsgYWRkcmVzc2VzIH0pOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3Vw
TmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBu
dWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKK30KKwordm9pZCBETlNSZXNvbHZl
UXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNv
dXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2Fu
Y2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19j
b250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2Fu
Y2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssICZjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBtX2NhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX2NhbmNlbEhhbmRsZXJzLnRha2UoaWRlbnRp
ZmllcikpCisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkM2ViM2Zk
OWEyNTcxZWNmODc0YmVmMWFlNmZkNTA0NmMwMGFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1YmxpYyBE
TlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fY2FuY2VsSGFuZGxlcnM7Cit9OworCit1c2luZyBE
TlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZm
OGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0j
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3Vy
ZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgot
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiog
dXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVz
ZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBk
aXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1
c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1l
czogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9m
IHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNo
b3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWlu
ZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJz
aG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlz
LCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlS
ZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJv
eHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBw
cm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgp
KTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQ
cm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsK
LSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZp
c1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3Rh
dGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJv
eHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVR
dWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVy
PiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBT
ZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7
Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2Fz
eW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5
UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUu
Y29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1Vz
aW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNz
KiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVj
cmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNz
aW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVz
b2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICho
b3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIu
LjNkZTMxNDM0YWE2MzAzNTdkYjM2ZGNhZTkxYWQ3MThjMzk2MTA0MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNy
ZWF0ZVRocmVhZCgpCkBAIC0xNjQsMTMgKzE2OCwxOCBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRl
cjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5l
dHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgYXV0byByZXNvbHZlciA9IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKGlkZW50aWZpZXIs
IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5j
ZWxsZWQpCisgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJy
b3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSks
IGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKworICAgICAg
ICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0
byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7
IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVy
KTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZl
cnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
CmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjFiZmFmYTQ2
YjcyMGMzYzIyMTNhNzExY2M3YmRjNjZkMWFiNzcxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApA
QCAtMzIsNjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCBy
ZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBj
b25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKKy8vIEZJWE1FOiBVc2UgdGhl
IGZ1bmN0aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS4KKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpE
TlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9V
TlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewot
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90
IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtS
VENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJl
ZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9z
dFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAg
ICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAg
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAo
Q0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4
KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0
IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nl
cy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFk
ZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJl
c3Nlcyk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+KG5l
dyBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKIH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZl
cihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZl
cjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0Nv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZl
cigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNl
dENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVu
a25vd24pKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1l
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29s
dmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBtX2lkZW50aWZpZXIs
IG1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rv
cCgpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhv
c3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KLXZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2
ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1Zjc2MjcyYzU4MDJiY2IwM2Vh
YjczNjQxODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNyBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a1JUQ1Jlc29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwg
Q2FuY2VsbGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2
ZXI+IGNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmKTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJy
b3I+OwotICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0gICAgQ29tcGxldGlvbkhhbmRs
ZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7
Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkRO
U0NvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTg4
ODEyOTRlMzA2ODMyNzQ2YmFlYjY3NGJiM2VjNWRmMmU4NDA0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJS
VEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5
cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQorewor
ICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7CisKKyAgICBBU1NFUlQoaW5m
byk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSo+KGluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAgICAgICAgLy8gRklY
TUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0
aGUgY2FsbGJhY2suCisgICAgICAgIHJlc29sdmVyLT5jb21wbGV0ZWQobWFrZVVuZXhwZWN0ZWQo
V2ViQ29yZTo6RE5TRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAo
Q0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRy
ZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291
bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4
KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVB
dEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5
dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6
OklQQWRkcmVzcygqYWRkcmVzcykpOworICAgIH0KKyAgICByZXNvbHZlci0+Y29tcGxldGVkKHsg
YWRkcmVzc2VzIH0pOworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6TmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IE5ldHdvcmtSVENSZXNvbHZlcihpZGVu
dGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK3sKK30KKworTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2E6On5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpCit7CisgICAgQ0ZIb3N0VW5z
Y2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpz
dGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7CisgICAgbV9ob3N0ID0gYWRvcHRDRihDRkhv
c3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpKTsKKyAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRo
aXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9o
b3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdp
dGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOworICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hOjpzdG9wKCkKK3sKKyAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0
KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKKyAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkROU0Vycm9yOjpDYW5jZWxs
ZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VC
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk2ZmMyZjhlOTk5MjM0
OTA3NTQ2NzRlMjVlNWYzMTNmYWI1OGY2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFJlbW92ZSB0
aGlzIGNsYXNzIHdoZW4gd2UgY29tcGxldGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlNS
ZXNvbHZlUXVldWVDRk5ldC4KK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGZpbmFsIDog
cHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxl
dGlvbkhhbmRsZXImJiYpOworICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpIGZpbmFsOwor
CisgICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpIGZpbmFsOworICAgIHZvaWQg
c3RvcCgpIGZpbmFsOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9z
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJU
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IDY3MDU1YmQ3YjNjM2Q0ZTNkNjVhMzVkN2NjMWU4MTZm
ODVhNDIzMzcuLjBmMjYzZTk0MmQ1MjFjYjM5MTg0MDBiZTNiMjY3NTBiNTQ3ZDUwZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dApAQCAtMzksNiArMzksOCBAQCBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtQcm9jZXNzU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3Vw
LmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3Bw
CiAKK05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisKIFBsYXRm
b3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy91
bml4L0F0dGFjaG1lbnRVbml4LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiN2U1NmE0ZWYwMjMxZDUzODE2MTAxOTYwN2QwODIz
NTkxODRhZmUuLmZkMzM0ZmY3ODBhMDg0NTA2OGNmMmVhMDRiZWJlNTk2MmY2YWE2N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTEy
LDYgKzkxMiw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNC
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLzsgfTsKIAkJNDEwNDgyQ0UxRERE
MzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3Jr
LmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEx
MkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi87IH07CisJ
CTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFG
OUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovOyB9OwogCQk0
MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQjIyNjIxRTM3MTI0NDAwNEY3
MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDEzMDc1QTkxREU4NUYyQzAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENT
b2NrZXQuY3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzMDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCAqLzsg
fTsKQEAgLTMyNzMsNiArMzI3NCw4IEBACiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBS
VENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdvcmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1
IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsg
cGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyog
TGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJX
ZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5
OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjIwOCw2ICs2MjExLDggQEAKIAkJCQk0MURDNDU5ODFFM0Q2RUQ2MDBCMTFGNTEgLyogTmV0
d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2
Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAogCQkJCTQxMTJCNTQ4MUY5RkQzQUMw
MEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywKKwkJCQk0MTEyQjU0NzFGOUZEM0FC
MDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovLAorCQkJCTQxMTJCNTQ4
MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovLAogCQkJCTQx
MzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLywKIAkJCQk0
MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovLAogCQkJCTQx
MzA3NTlEMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0Lm1lc3NhZ2VzLmluICov
LApAQCAtMTA1NDMsNiArMTA1NDgsNyBAQAogCQkJCTQxREM0NTk3MUUzRDZFMjIwMEIxMUY1MSAv
KiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0
MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jl
c29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAv
KiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMwNzVB
OTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUg
LyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTQ4MmFhNDliZGQzMDMz
OWRmOGFkY2Y1Y2Q2ZjU0ZDQ4OGE5NGY3OS4uMzc4ODFiMWJiYWQ1YTE4MTRkNDAzY2RkNGI5OTli
ZDQ0ZDBmZWIwZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAyLTE5ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8
YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQg
YWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5ldyB1bml0IHRlc3RzIGZvciBoZSByZXNvbHZlIGFuZCBzdG9wUmVzb2x2ZSBmdW5j
dGlvbnMuIFdlIG5lZWQgdG8gY29tcGlsZSB0aGVtIGZvciB0aGUKKyAgICAgICAgb3RoZXIgcGxh
dGZvcm1zIHdoZW4gdGhlIEFQSXMgYXJlIHN1cHBvcnRlZC4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ROUy5jcHA6CisKIDIwMTgtMDItMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBDbGFzc2lmeSBy
ZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0cyB0byBvdGhlciBwcmV2YWxl
bnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0YWVm
Njk1M2NkMTYxNGJmNmNmMDNjZTIyNDhhZmIzYzZkMmRlNWY4Li42MjAyZjQ2YmFmMGIzMzc4NWM4
NWNhZDcyYzZiMjgzM2JlODg3ZDQzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21h
a2UKQEAgLTg3LDYgKzg3LDcgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV2ViQ29yZS9DU1NQYXJzZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9ETlMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV2ViQ29yZS9HcmlkUG9zaXRpb24uY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9ETlMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNzdkYTdhMmMwYTU3NTRlYTBkZTVlZGYwNzZi
NzViYWY4ZGNjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRE5TLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV1RGU3Ry
aW5nVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ROUy5oPgorI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK2Jvb2wgZG9uZSA9IGZhbHNlOworCitURVNUKEROU1Rlc3Qs
IGNhbmNlbFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29w
KCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53ZWJraXQub3Jn
Iik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3Im
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NF
UlRfRkFMU0UocmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocmVzdWx0
LmVycm9yKCkgPT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFt
ZSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHN0b3BSZXNvbHZlRE5TKGlk
ZW50aWZpZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoRE5TVGVzdCwgY2Fu
dFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisK
KyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoIm5vdGF2YWxpZGRvbWFpbi5ub3Rh
dmFsaWRkb21haW4iKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIEROU0Nv
bXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRkcmVz
c2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworCisg
ICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FudFJlc29sdmUpOwor
CisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29s
dmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBVdGls
OjpydW4oJmRvbmUpOworfQorCitURVNUKEROU1Rlc3QsIHJlc29sdmVETlMpCit7CisgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5h
bWUgPSBTdHJpbmcoInd3dy53ZWJraXQub3JnIik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9
IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdl
YkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBk
b25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOwor
CisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29s
dmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBVdGls
OjpydW4oJmRvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334153</attachid>
            <date>2018-02-19 04:54:41 -0800</date>
            <delta_ts>2018-02-19 05:39:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180219135440.patch</filename>
            <type>text/plain</type>
            <size>80874</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMmZmMTZmZjU4YjZmYzhlODU4ZDFkMzg0MThhZTNl
NjA0YTY1NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6
OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBBZGQgdGhl
IG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDogTmV3IGNs
YXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRpbmcKKyAg
ICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93cyBzdG9w
cGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVy
Q2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBw
bGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBs
ZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJl
c29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdpdGggdGhlIHNvdXAgbGlicmFy
eS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKTog
U3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEgR0NhbmNlbGxhYmxl
LgorCiAyMDE4LTAyLTEyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IGRlZmVyIGZvY3VzZWRVSUVsZW1lbnQgbm90aWZpY2F0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA4NDFkODI2MTdiNWY4ZTE5ZGViMjBkZDRkZDJjNmM4ODllZTk0YzRmLi41M2ZiNGM0MmUx
ZjI2ZGFmYjU0ODQzMDRkYTE3MzU3NTU5MTkwZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNpZmljIENv
Y29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBjbGFzcywg
bWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGljIGFuZCBk
ZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNoIGVuY2Fw
c3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4gYWxpYXMg
Y2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUgcmVzb2x2
ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIp
OiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRkcmVzcyBj
bGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0YyBsaWJy
YXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5TIEFQSSB0
byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRl
ZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRo
ZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+
TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGlt
cGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0
aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcg
dGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBt
YWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlv
bi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0
aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBE
TlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2RzIGluIHRo
ZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3VyZSBhbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnku
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
Lmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDItMTIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0
cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3ZmZjZjJjOGQ3OGVkMGVjLi4y
YzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCi0gICAgcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1NzNjNmJkNTNhYmM0ODcwMTNh
NDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4YWYzODc4MWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZTUzZjBhOWE4
Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1MDY2M2ExZTQ1NTI4Yjc1OTYx
ODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcwNSw2ICsxNzA1LDcgQEAgcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZkNjFlZmRjODM4ZTkwOTlhMS4u
MjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZO
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMzZDY1NTVjMGFjMDI5NS4uOWYy
MTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5OSw2ICsyMTk5
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjA0OCw4ICsxMjA1MCw5IEBA
CiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29u
dGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRjhFMTMyMTI1
NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGMzRGRTUwRTgy
RjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
TlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYy
N0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzQzUwMEFCNzVBNkUw
MDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAw
Q0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJRTRBMDA3ODQxQjgyMEVEMzAw
MkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlFNEEwMDc4MjFCODIwRUM4MDAy
QzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmgg
Ki8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAg
Ki8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICov
LApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0VFNjg0NEUx
MkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNUYy
REJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUIyRjM0
RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJCQkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLywKKwkJCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLywKIAkJCQk3RUU2
ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi8sCiAJCQkJ
N0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCAqLywKIAkJ
CQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMx
QTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAw
RDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRG
RTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0VFNjg0NkYx
MkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZy
YWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4
IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2NmYuLmUzY2M5MDhjZGZhYWFl
N2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFr
ZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMx
YjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
UmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzY2MjBjNDViYjc1YzliYjc4N2Q3
OWI4ZDFkMTQ1MGNlNmZjNDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZURO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0
aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUs
IGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZURO
Uyh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuc3RvcFJlc29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjZiMzg2OWY0ZDNiMjFjNDIyNzEwNzFlZmUwNWI3MDU3M2MxZjJhZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7
CitwdWJsaWM6CisgICAgSVBBZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAg
Y29uc3Qgc3RydWN0IGluX2FkZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2lu
X2FkZHI7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsK
K307CisKK2VudW0gY2xhc3MgRE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2Vs
bGVkIH07CisKK3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNp
bmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5T
QWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxl
dGlvbkhhbmRsZXImKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcFJlc29sdmVETlModWludDY0
X3QgaWRlbnRpZmllcik7CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVm
NWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjc4ODcxZGVjYTFiMWQ1ZDI5NmZmNDYzNjljMDNjMDNk
NmRkY2I4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDYgKzI3LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTUyLDcgKzYwLDcgQEAgc3RhdGljIGNv
bnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZl
UXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwog
fQpAQCAtNjAsOCArNjgsNiBAQCBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKICAgICA6IG1fdGlt
ZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3Rz
SW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCi0gICAgLCBtX2xhc3RQcm94
eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2lsbCBy
ZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24KICAg
ICAvLyBwbGF0Zm9ybXMgdGhhdCBoYXZlIGFuIGFzeW5jaHJvbm91cyBpbXBsZW1lbnRhdGlvbiBv
ZiB1cGRhdGVJc1VzaW5nUHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlNSZXNvbHZlUXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQxYzA1YWJiMTg2NWQ3
ZTJiZDJlZjBiOGFhLi45ZjkxZDIzMGE5NzM3OTA1MGQ4NjAzM2VlNWM1MTY4MDFkZDRlMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgRE5TUmVzb2x2ZVF1ZXVlX2gKICNkZWZpbmUg
RE5TUmVzb2x2ZVF1ZXVlX2gKIAorI2luY2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOSwzMCAr
NDAsMzQgQEAgY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZSgpOwor
ICAgIHZpcnR1YWwgfkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBE
TlNSZXNvbHZlUXVldWUmIHNpbmdsZXRvbigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlv
bkhhbmRsZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAg
ICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVz
dHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0K
K3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAK
ICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAg
c3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQ
cm94eTsKLSAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOworICAg
IGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUgeyAwIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3
Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0
ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBt
X2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0
YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBo
dHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIiku
Y3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBw
cm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJv
eHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5n
ZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBo
dHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsK
LSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZh
bHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCho
dHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVO
b25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291
bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBz
UHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8
IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0
UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCop
Ci17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhy
ZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkg
bm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRD
RihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0
ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0Lmxl
YWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNr
KCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xp
ZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVh
a2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vs
c2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1
bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAg
IENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRj
aEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDkxYzI2MTcwYmIyNzZiMDFhZGEwNWMzYzNkNzgx
MTZhZWMxODI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJM
b2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9S
TShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2lu
Z1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdz
ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAo
IXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0g
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgp
OworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0Nv
cHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsK
KworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5
QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEg
JiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NG
UHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50
ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25h
cnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlBy
b3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1Vz
aW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRp
YyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwg
Y29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5n
bGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMg
YWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgw
LCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7Cisg
ICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Cisg
ICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2ls
bCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQor
ICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFp
bigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3
ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNs
aWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwor
I2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0
QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShj
b25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29s
dmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE4MDc4YzdiOWY1MmIyNWFmMDQy
ZWU1MjIxMTNlNGI1MDIyMWQwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUodWludDY0
X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNp
bmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1
cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFt
ZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODJjMGQ3
NjlkMmE2ZjczYTUzZDdkMmI3ZTBjZTI5OTUyYzJjYzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywg
dWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImIC8qIGNvbXBs
ZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVD
dXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGVjZGIxN2IzNTljZjQxYTVhMjc1Y2QxYjA1NTliODZkMDEyOGFj
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1
ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVy
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1
cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWQ0YmRjYjljNmM2
MDFjYjUyN2I3Mjc4YTAyNzU2Yzc1YzhmOGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0w
LDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIK
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluaXRpYWxseSB0
cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5
IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7CitzdGF0aWMg
Ym9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisKK3N0YXRpYyBib29sIGRpZFJlc29sdmVQ
cm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBw
cm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3Qg
aXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVm
ZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgLy8gcmVzb2x2
aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVk
IGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBj
b25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBh
cmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhl
ciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYg
c3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQ
cm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29s
KiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9y
ZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWlu
aW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94
eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBp
c1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09i
amVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNV
c2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgR1JlZlB0
cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0
UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNvbHZlcik7CisKKyAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlD
YWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworfQorCitzdGF0aWMgdm9pZCBy
ZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBz
dGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RhdGljX2Nhc3Q8RE5TQ29tcGxldGlvbkhhbmRsZXIqPihkYXRhKTsK
KworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spIHsKKyAgICAgICAgRE5TRXJyb3Ig
ZXJyb3IgPSBETlNFcnJvcjo6VW5rbm93bjsKKworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewor
ICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX0NBTlRfUkVTT0xWRToKKyAgICAgICAgICAgIGVycm9y
ID0gRE5TRXJyb3I6OkNhbnRSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBETlNFcnJvcjo6
Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09VUF9TVEFUVVNf
T0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfTsKKworICAgICAgICAoKmNvbXBsZXRpb25IYW5kbGVyKShtYWtlVW5leHBlY3Rl
ZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3VwX2FkZHJl
c3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1dG8qIGlwQWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9z
b2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAgICBhZGRyZXNzZXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3NbaV0pKTsKKworICAgICgqY29tcGxl
dGlvbkhhbmRsZXIpKHsgYWRkcmVzc2VzIH0pOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3Vw
TmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBu
dWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKK30KKwordm9pZCBETlNSZXNvbHZl
UXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNv
dXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2Fu
Y2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19j
b250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2Fu
Y2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssICZjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBtX2NhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX2NhbmNlbEhhbmRsZXJzLnRha2UoaWRlbnRp
ZmllcikpCisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkM2ViM2Zk
OWEyNTcxZWNmODc0YmVmMWFlNmZkNTA0NmMwMGFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1YmxpYyBE
TlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fY2FuY2VsSGFuZGxlcnM7Cit9OworCit1c2luZyBE
TlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZm
OGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0j
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3Vy
ZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgot
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiog
dXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVz
ZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBk
aXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1
c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1l
czogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9m
IHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNo
b3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWlu
ZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJz
aG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlz
LCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlS
ZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJv
eHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBw
cm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgp
KTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQ
cm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsK
LSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZp
c1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3Rh
dGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJv
eHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVR
dWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVy
PiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBT
ZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7
Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2Fz
eW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5
UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUu
Y29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1Vz
aW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNz
KiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVj
cmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNz
aW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVz
b2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICho
b3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIu
LjNkZTMxNDM0YWE2MzAzNTdkYjM2ZGNhZTkxYWQ3MThjMzk2MTA0MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNy
ZWF0ZVRocmVhZCgpCkBAIC0xNjQsMTMgKzE2OCwxOCBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRl
cjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5l
dHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgYXV0byByZXNvbHZlciA9IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKGlkZW50aWZpZXIs
IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5j
ZWxsZWQpCisgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJy
b3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSks
IGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKworICAgICAg
ICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0
byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7
IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVy
KTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZl
cnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
CmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjFiZmFmYTQ2
YjcyMGMzYzIyMTNhNzExY2M3YmRjNjZkMWFiNzcxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApA
QCAtMzIsNjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCBy
ZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBj
b25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKKy8vIEZJWE1FOiBVc2UgdGhl
IGZ1bmN0aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS4KKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpE
TlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9V
TlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewot
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90
IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtS
VENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJl
ZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9z
dFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAg
ICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAg
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAo
Q0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4
KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0
IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nl
cy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFk
ZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJl
c3Nlcyk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+KG5l
dyBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKIH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZl
cihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZl
cjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0Nv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZl
cigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNl
dENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVu
a25vd24pKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1l
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29s
dmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBtX2lkZW50aWZpZXIs
IG1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rv
cCgpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhv
c3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KLXZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2
ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1Zjc2MjcyYzU4MDJiY2IwM2Vh
YjczNjQxODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNyBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a1JUQ1Jlc29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwg
Q2FuY2VsbGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2
ZXI+IGNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmKTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJy
b3I+OwotICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0gICAgQ29tcGxldGlvbkhhbmRs
ZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7
Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkRO
U0NvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDQw
MGIwMTZhN2ViZDQ0YTNlYTc5MWYzNGFiOGIzNDM0NDE5NTc4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJS
VEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5
cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQorewor
ICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7CisKKyAgICBBU1NFUlQoaW5m
byk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYSo+KGluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAgICAgICAgLy8gRklY
TUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0
aGUgY2FsbGJhY2suCisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
V2ViQ29yZTo6RE5TRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAo
Q0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRy
ZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291
bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4
KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVB
dEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5
dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6
OklQQWRkcmVzcygqYWRkcmVzcykpOworICAgIH0KKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHsg
YWRkcmVzc2VzIH0pOworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6TmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IE5ldHdvcmtSVENSZXNvbHZlcihpZGVu
dGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK3sKK30KKworTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2E6On5OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSgpCit7CisgICAgQ0ZIb3N0VW5z
Y2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpz
dGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7CisgICAgbV9ob3N0ID0gYWRvcHRDRihDRkhv
c3RDcmVhdGVXaXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpKTsKKyAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRo
aXMsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9o
b3N0LmdldCgpLCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKKyAgICBDRkhvc3RTY2hlZHVsZVdp
dGhSdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOworICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihtX2hvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNv
Y29hOjpzdG9wKCkKK3sKKyAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0
KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKKyAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkROU0Vycm9yOjpDYW5jZWxs
ZWQpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VC
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlkZTQwYjExMjljNDlj
ZDNkNzA0Nzg0ODcwMmQ4Mjc0Yzg0ZTNmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFJlbW92ZSB0
aGlzIGNsYXNzIHdoZW4gd2UgY29tcGxldGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlNS
ZXNvbHZlUXVldWVDRk5ldC4KK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGZpbmFsIDog
cHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxl
dGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisK
KyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBz
dG9wKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0dUSy50eHQKaW5kZXggNjcwNTViZDdiM2MzZDRlM2Q2NWEzNWQ3Y2MxZTgxNmY4
NWE0MjMzNy4uMGYyNjNlOTQyZDUyMWNiMzkxODQwMGJlM2IyNjc1MGI1NDdkNTBkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNHVEsudHh0CkBAIC0zOSw2ICszOSw4IEBAIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Byb2Nlc3NTb3VwLmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAu
Y3BwCiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAK
IAorTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKwogUGxhdGZv
cm0vSVBDL2dsaWIvR1NvY2tldE1vbml0b3IuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL3Vu
aXgvQXR0YWNobWVudFVuaXguY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2I3ZTU2YTRlZjAyMzFkNTM4MTYxMDE5NjA3ZDA4MjM1
OTE4NGFmZS4uZmQzMzRmZjc4MGEwODQ1MDY4Y2YyZWEwNGJlYmU1OTYyZjZhYTY3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTIs
NiArOTEyLDcgQEAKIAkJNDEwNDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0Ix
REREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQz
MjRGMDBGMDA2RDAgLyogUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsu
aCAqLzsgfTsKIAkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEy
QjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJ
NDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5
RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQx
MUIyMjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0Rjcz
NjMgLyogTGliV2ViUlRDTmV0d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVD
NjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1Nv
Y2tldC5jcHAgKi87IH07CiAJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
TW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTMwNzU5QTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9
OwpAQCAtMzI3Myw2ICszMjc0LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJU
Q05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUg
LyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNv
bHZlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdv
cmtSVENSZXNvbHZlckNvY29hLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
MTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBM
aWJXZWJSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldl
YlJUQ05ldHdvcmsuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8q
IE5ldHdvcmtSVENTb2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTmV0d29ya1JUQ1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1NvY2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5
MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02MjA4LDYgKzYyMTEsOCBAQAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3
b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3
ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAw
RTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIw
MEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgx
RjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEz
MDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQx
MzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEz
MDc1OUQxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8s
CkBAIC0xMDU0Myw2ICsxMDU0OCw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8q
IE5ldHdvcmtSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQz
MTg1MDBGMzI4MkUgLyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5
MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAv
KiBOZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1NDgyYWE0OWJkZDMwMzM5
ZGY4YWRjZjVjZDZmNTRkNDg4YTk0Zjc5Li4zNzg4MWIxYmJhZDVhMTgxNGQ0MDNjZGQ0Yjk5OWJk
NDRkMGZlYjBlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDItMTkgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxh
bGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBh
Z25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc4ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgbmV3IHVuaXQgdGVzdHMgZm9yIGhlIHJlc29sdmUgYW5kIHN0b3BSZXNvbHZlIGZ1bmN0
aW9ucy4gV2UgbmVlZCB0byBjb21waWxlIHRoZW0gZm9yIHRoZQorICAgICAgICBvdGhlciBwbGF0
Zm9ybXMgd2hlbiB0aGUgQVBJcyBhcmUgc3VwcG9ydGVkLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRE5TLmNwcDoKKwogMjAxOC0wMi0xMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IENsYXNzaWZ5IHJl
c291cmNlcyBhcyBwcmV2YWxlbnQgYmFzZWQgb24gcmVkaXJlY3RzIHRvIG90aGVyIHByZXZhbGVu
dCByZXNvdXJjZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsu
Y21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDRhZWY2
OTUzY2QxNjE0YmY2Y2YwM2NlMjI0OGFmYjNjNmQyZGU1ZjguLjYyMDJmNDZiYWYwYjMzNzg1Yzg1
Y2FkNzJjNmIyODMzYmU4ODdkNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtODcsNiArODcsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XZWJDb3JlL0NTU1BhcnNlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKyAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE3N2RhN2EyYzBhNTc1NGVhMGRlNWVkZjA3NmI3
NWJhZjhkY2NhZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9ETlMuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXVEZTdHJp
bmdVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworYm9vbCBkb25lID0gZmFsc2U7CisKK1RFU1QoRE5TVGVzdCwg
Y2FuY2VsUmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygid3d3LndlYmtpdC5vcmci
KTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VS
VF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQu
ZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKTsKKworICAgICAgICByZXR1
cm47CisgICAgfTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICByZXNvbHZlRE5TKGhvc3RuYW1l
LCBpZGVudGlmaWVyLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgc3RvcFJlc29sdmVETlMoaWRl
bnRpZmllcik7CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChETlNUZXN0LCBjYW50
UmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKwor
ICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygibm90YXZhbGlkZG9tYWluLm5vdGF2
YWxpZGRvbWFpbiIpOworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAxOworCisgICAgRE5TQ29t
cGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIgPSBbXShXZWJDb3JlOjpETlNBZGRyZXNz
ZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisKKyAg
ICAgICAgQVNTRVJUX0ZBTFNFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKHJlc3VsdC5lcnJvcigpID09IFdlYkNvcmU6OkROU0Vycm9yOjpDYW50UmVzb2x2ZSk7CisK
KyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2
ZUROUyhob3N0bmFtZSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIFV0aWw6
OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoRE5TVGVzdCwgcmVzb2x2ZUROUykKK3sKKyAgICBSdW5M
b29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFt
ZSA9IFN0cmluZygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0g
MTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2Vi
Q29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRv
bmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisK
KyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2
ZUROUyhob3N0bmFtZSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIFV0aWw6
OnJ1bigmZG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334156</attachid>
            <date>2018-02-19 05:39:55 -0800</date>
            <delta_ts>2018-02-19 05:48:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180219143953.patch</filename>
            <type>text/plain</type>
            <size>81147</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMmZmMTZmZjU4YjZmYzhlODU4ZDFkMzg0MThhZTNl
NjA0YTY1NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6
OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBBZGQgdGhl
IG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDogTmV3IGNs
YXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRpbmcKKyAg
ICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93cyBzdG9w
cGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVy
Q2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBw
bGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBs
ZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJl
c29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdpdGggdGhlIHNvdXAgbGlicmFy
eS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKTog
U3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEgR0NhbmNlbGxhYmxl
LgorCiAyMDE4LTAyLTEyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IGRlZmVyIGZvY3VzZWRVSUVsZW1lbnQgbm90aWZpY2F0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA4NDFkODI2MTdiNWY4ZTE5ZGViMjBkZDRkZDJjNmM4ODllZTk0YzRmLi41M2ZiNGM0MmUx
ZjI2ZGFmYjU0ODQzMDRkYTE3MzU3NTU5MTkwZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNpZmljIENv
Y29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBjbGFzcywg
bWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGljIGFuZCBk
ZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNoIGVuY2Fw
c3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4gYWxpYXMg
Y2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUgcmVzb2x2
ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIp
OiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRkcmVzcyBj
bGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0YyBsaWJy
YXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5TIEFQSSB0
byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRl
ZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRo
ZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+
TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGlt
cGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0
aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcg
dGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBt
YWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlv
bi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0
aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBE
TlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2RzIGluIHRo
ZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3VyZSBhbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnku
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
Lmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDItMTIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0
cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3ZmZjZjJjOGQ3OGVkMGVjLi4y
YzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCi0gICAgcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1NzNjNmJkNTNhYmM0ODcwMTNh
NDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4YWYzODc4MWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZTUzZjBhOWE4
Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1MDY2M2ExZTQ1NTI4Yjc1OTYx
ODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcwNSw2ICsxNzA1LDcgQEAgcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZkNjFlZmRjODM4ZTkwOTlhMS4u
MjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZO
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMzZDY1NTVjMGFjMDI5NS4uOWYy
MTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5OSw2ICsyMTk5
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjA0OCw4ICsxMjA1MCw5IEBA
CiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29u
dGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRjhFMTMyMTI1
NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGMzRGRTUwRTgy
RjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
TlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYy
N0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzQzUwMEFCNzVBNkUw
MDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAw
Q0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJRTRBMDA3ODQxQjgyMEVEMzAw
MkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlFNEEwMDc4MjFCODIwRUM4MDAy
QzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmgg
Ki8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAg
Ki8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICov
LApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0VFNjg0NEUx
MkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNUYy
REJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUIyRjM0
RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJCQkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLywKKwkJCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLywKIAkJCQk3RUU2
ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi8sCiAJCQkJ
N0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCAqLywKIAkJ
CQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMx
QTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAw
RDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRG
RTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0VFNjg0NkYx
MkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZy
YWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4
IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2NmYuLmUzY2M5MDhjZGZhYWFl
N2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFr
ZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMx
YjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
UmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzY2MjBjNDViYjc1YzliYjc4N2Q3
OWI4ZDFkMTQ1MGNlNmZjNDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZURO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0
aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUs
IGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZURO
Uyh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuc3RvcFJlc29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjZiMzg2OWY0ZDNiMjFjNDIyNzEwNzFlZmUwNWI3MDU3M2MxZjJhZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7
CitwdWJsaWM6CisgICAgSVBBZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAg
Y29uc3Qgc3RydWN0IGluX2FkZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2lu
X2FkZHI7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsK
K307CisKK2VudW0gY2xhc3MgRE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2Vs
bGVkIH07CisKK3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNp
bmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5T
QWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxl
dGlvbkhhbmRsZXImKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcFJlc29sdmVETlModWludDY0
X3QgaWRlbnRpZmllcik7CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVm
NWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjc4ODcxZGVjYTFiMWQ1ZDI5NmZmNDYzNjljMDNjMDNk
NmRkY2I4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDYgKzI3LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTUyLDcgKzYwLDcgQEAgc3RhdGljIGNv
bnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZl
UXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwog
fQpAQCAtNjAsOCArNjgsNiBAQCBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKICAgICA6IG1fdGlt
ZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3Rz
SW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCi0gICAgLCBtX2xhc3RQcm94
eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2lsbCBy
ZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24KICAg
ICAvLyBwbGF0Zm9ybXMgdGhhdCBoYXZlIGFuIGFzeW5jaHJvbm91cyBpbXBsZW1lbnRhdGlvbiBv
ZiB1cGRhdGVJc1VzaW5nUHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlNSZXNvbHZlUXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQxYzA1YWJiMTg2NWQ3
ZTJiZDJlZjBiOGFhLi45ZjkxZDIzMGE5NzM3OTA1MGQ4NjAzM2VlNWM1MTY4MDFkZDRlMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgRE5TUmVzb2x2ZVF1ZXVlX2gKICNkZWZpbmUg
RE5TUmVzb2x2ZVF1ZXVlX2gKIAorI2luY2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOSwzMCAr
NDAsMzQgQEAgY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZSgpOwor
ICAgIHZpcnR1YWwgfkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBE
TlNSZXNvbHZlUXVldWUmIHNpbmdsZXRvbigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlv
bkhhbmRsZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAg
ICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVz
dHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0K
K3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAK
ICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAg
c3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQ
cm94eTsKLSAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOworICAg
IGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUgeyAwIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3
Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0
ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBt
X2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0
YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBo
dHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIiku
Y3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBw
cm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJv
eHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5n
ZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBo
dHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsK
LSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZh
bHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCho
dHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVO
b25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291
bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBz
UHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8
IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0
UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCop
Ci17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhy
ZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkg
bm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRD
RihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0
ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0Lmxl
YWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNr
KCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xp
ZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVh
a2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vs
c2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1
bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAg
IENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRj
aEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDkxYzI2MTcwYmIyNzZiMDFhZGEwNWMzYzNkNzgx
MTZhZWMxODI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJM
b2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9S
TShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2lu
Z1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdz
ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAo
IXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0g
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgp
OworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0Nv
cHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsK
KworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5
QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEg
JiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NG
UHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50
ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25h
cnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlBy
b3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1Vz
aW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRp
YyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwg
Y29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5n
bGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMg
YWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgw
LCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7Cisg
ICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Cisg
ICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2ls
bCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQor
ICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFp
bigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3
ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNs
aWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwor
I2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0
QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShj
b25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29s
dmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE4MDc4YzdiOWY1MmIyNWFmMDQy
ZWU1MjIxMTNlNGI1MDIyMWQwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUodWludDY0
X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNp
bmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1
cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFt
ZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODJjMGQ3
NjlkMmE2ZjczYTUzZDdkMmI3ZTBjZTI5OTUyYzJjYzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywg
dWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImIC8qIGNvbXBs
ZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVD
dXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGVjZGIxN2IzNTljZjQxYTVhMjc1Y2QxYjA1NTliODZkMDEyOGFj
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1
ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVy
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1
cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWQ0YmRjYjljNmM2
MDFjYjUyN2I3Mjc4YTAyNzU2Yzc1YzhmOGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0w
LDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIK
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluaXRpYWxseSB0
cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5
IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7CitzdGF0aWMg
Ym9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisKK3N0YXRpYyBib29sIGRpZFJlc29sdmVQ
cm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBw
cm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3Qg
aXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVm
ZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgLy8gcmVzb2x2
aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVk
IGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBj
b25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBh
cmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhl
ciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYg
c3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQ
cm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29s
KiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9y
ZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWlu
aW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94
eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBp
c1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09i
amVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNV
c2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgR1JlZlB0
cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0
UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNvbHZlcik7CisKKyAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlD
YWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworfQorCitzdGF0aWMgdm9pZCBy
ZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBz
dGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RhdGljX2Nhc3Q8RE5TQ29tcGxldGlvbkhhbmRsZXIqPihkYXRhKTsK
KworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spIHsKKyAgICAgICAgRE5TRXJyb3Ig
ZXJyb3IgPSBETlNFcnJvcjo6VW5rbm93bjsKKworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewor
ICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX0NBTlRfUkVTT0xWRToKKyAgICAgICAgICAgIGVycm9y
ID0gRE5TRXJyb3I6OkNhbnRSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBETlNFcnJvcjo6
Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09VUF9TVEFUVVNf
T0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfTsKKworICAgICAgICAoKmNvbXBsZXRpb25IYW5kbGVyKShtYWtlVW5leHBlY3Rl
ZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3VwX2FkZHJl
c3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1dG8qIGlwQWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9z
b2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAgICBhZGRyZXNzZXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3NbaV0pKTsKKworICAgICgqY29tcGxl
dGlvbkhhbmRsZXIpKHsgYWRkcmVzc2VzIH0pOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3Vw
TmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBu
dWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKK30KKwordm9pZCBETlNSZXNvbHZl
UXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNv
dXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2Fu
Y2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19j
b250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2Fu
Y2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssICZjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBtX2NhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX2NhbmNlbEhhbmRsZXJzLnRha2UoaWRlbnRp
ZmllcikpCisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkM2ViM2Zk
OWEyNTcxZWNmODc0YmVmMWFlNmZkNTA0NmMwMGFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1YmxpYyBE
TlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fY2FuY2VsSGFuZGxlcnM7Cit9OworCit1c2luZyBE
TlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZm
OGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0j
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3Vy
ZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgot
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiog
dXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVz
ZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBk
aXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1
c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1l
czogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9m
IHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNo
b3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWlu
ZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJz
aG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlz
LCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlS
ZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJv
eHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBw
cm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgp
KTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQ
cm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsK
LSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZp
c1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3Rh
dGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJv
eHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVR
dWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVy
PiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBT
ZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7
Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2Fz
eW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5
UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUu
Y29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1Vz
aW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNz
KiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVj
cmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNz
aW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVz
b2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICho
b3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIu
LjNkZTMxNDM0YWE2MzAzNTdkYjM2ZGNhZTkxYWQ3MThjMzk2MTA0MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNy
ZWF0ZVRocmVhZCgpCkBAIC0xNjQsMTMgKzE2OCwxOCBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRl
cjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5l
dHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgYXV0byByZXNvbHZlciA9IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKGlkZW50aWZpZXIs
IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5j
ZWxsZWQpCisgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJy
b3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSks
IGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKworICAgICAg
ICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0
byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7
IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVy
KTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZl
cnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
CmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjFiZmFmYTQ2
YjcyMGMzYzIyMTNhNzExY2M3YmRjNjZkMWFiNzcxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApA
QCAtMzIsNjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCBy
ZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBj
b25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKKy8vIEZJWE1FOiBVc2UgdGhl
IGZ1bmN0aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS4KKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpE
TlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9V
TlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewot
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90
IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtS
VENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJl
ZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9z
dFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAg
ICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAg
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAo
Q0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4
KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0
IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nl
cy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFk
ZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJl
c3Nlcyk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+KG5l
dyBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKIH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZl
cihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZl
cjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0Nv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZl
cigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNl
dENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVu
a25vd24pKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1l
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29s
dmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBtX2lkZW50aWZpZXIs
IG1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rv
cCgpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhv
c3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KLXZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2
ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1Zjc2MjcyYzU4MDJiY2IwM2Vh
YjczNjQxODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNyBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a1JUQ1Jlc29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwg
Q2FuY2VsbGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2
ZXI+IGNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmKTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJy
b3I+OwotICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0gICAgQ29tcGxldGlvbkhhbmRs
ZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7
Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkRO
U0NvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODk4
ZDQyODM5OWQ2MmVhYzgwZGYwZDg3YjUzMjI4N2ZlODdlZTEwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VC
UlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9U
eXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgQVNTRVJUKGlu
Zm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EqPihpbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4g
dGhlIGNhbGxiYWNrLgorICAgICAgICByZXNvbHZlci0+Y29tcGxldGVkKG1ha2VVbmV4cGVjdGVk
KFdlYkNvcmU6OkROU0Vycm9yOjpVbmtub3duKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0g
KENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVfdCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRk
cmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNv
dW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRl
eCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAgICBhdXRvKiBhZGRyZXNz
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRC
eXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3Jl
OjpJUEFkZHJlc3MoKmFkZHJlc3MpKTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRlZCh7
IGFkZHJlc3NlcyB9KTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENS
ZXNvbHZlckNvY29hKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRl
bnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENS
ZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVu
c2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwg
a0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgp
LCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZI
b3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0
cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0
aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1f
aG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVX
aXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9v
cERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29s
dXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0Lmdl
dCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2Vs
bGVkKSk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OmNvbXBsZXRlZChXZWJD
b3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgYWRkcmVzc2VzT3JFcnJvcikKK3sKKyAgICBpZiAo
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYWRkcmVzc2VzT3JFcnJvcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZGFlY2FmMzEwMjUyMTgwOGY4YmVlZTVj
YjFkNWQ2NTk1N2YwYmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5j
bHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mg
d2hlbiB3ZSBjb21wbGV0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LgorY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0
d29ya1JUQ1Jlc29sdmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxl
ciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKSBmaW5hbDsKKworICAgIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5h
bDsKKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7CisKKyAgICB2
b2lkIGNvbXBsZXRlZChXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKaW5kZXggNjcwNTViZDdiM2MzZDRlM2Q2NWEzNWQ3Y2MxZTgxNmY4NWE0MjMzNy4uMGYy
NjNlOTQyZDUyMWNiMzkxODQwMGJlM2IyNjc1MGI1NDdkNTBkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
CkBAIC0zOSw2ICszOSw4IEBAIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKIAorTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKwogUGxhdGZvcm0vSVBDL2dsaWIv
R1NvY2tldE1vbml0b3IuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVu
dFVuaXguY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
IEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggM2I3ZTU2YTRlZjAyMzFkNTM4MTYxMDE5NjA3ZDA4MjM1OTE4NGFmZS4uZmQz
MzRmZjc4MGEwODQ1MDY4Y2YyZWEwNGJlYmU1OTYyZjZhYTY3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTIsNiArOTEyLDcgQEAK
IAkJNDEwNDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxREREMkZCNTAwRjAw
NkQwIC8qIFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAg
LyogUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJ
NDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FC
MDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDExMkI1NTUxRkEw
RUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4
NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFC
QTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2Vi
UlRDTmV0d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29y
a1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87
IH07CiAJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFE
RTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpAQCAtMzI3Myw2
ICszMjc0LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JU
Q1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdv
cmtSVENSZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlG
RDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ4MUY5RkQz
QUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3
b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsu
aDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENT
b2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JU
Q1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjA4LDYgKzYy
MTEsOCBAQAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlk
ZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdv
cmtSVENSZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5l
dHdvcmtSVENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3
OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1OTgxREU4NEZC
MDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3NTk5MURFODRG
QjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1OUQxREU4NEZC
MDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDU0Myw2
ICsxMDU0OCw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUg
LyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUx
MTY1NDMxODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2Vy
dmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1NDgyYWE0OWJkZDMwMzM5ZGY4YWRjZjVjZDZm
NTRkNDg4YTk0Zjc5Li4zNzg4MWIxYmJhZDVhMTgxNGQ0MDNjZGQ0Yjk5OWJkNDRkMGZlYjBlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTgtMDItMTkgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5j
b20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3IHVu
aXQgdGVzdHMgZm9yIGhlIHJlc29sdmUgYW5kIHN0b3BSZXNvbHZlIGZ1bmN0aW9ucy4gV2UgbmVl
ZCB0byBjb21waWxlIHRoZW0gZm9yIHRoZQorICAgICAgICBvdGhlciBwbGF0Zm9ybXMgd2hlbiB0
aGUgQVBJcyBhcmUgc3VwcG9ydGVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNw
cDoKKwogMjAxOC0wMi0xMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IENsYXNzaWZ5IHJlc291cmNlcyBhcyBw
cmV2YWxlbnQgYmFzZWQgb24gcmVkaXJlY3RzIHRvIG90aGVyIHByZXZhbGVudCByZXNvdXJjZXMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDRhZWY2OTUzY2QxNjE0YmY2
Y2YwM2NlMjI0OGFmYjNjNmQyZGU1ZjguLjYyMDJmNDZiYWYwYjMzNzg1Yzg1Y2FkNzJjNmIyODMz
YmU4ODdkNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtODcsNiAr
ODcsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
ZWJDb3JlL0NTU1BhcnNlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XZWJDb3JlL0ROUy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3Jl
L0dyaWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9ETlMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWE3N2RhN2EyYzBhNTc1NGVhMGRlNWVkZjA3NmI3NWJhZjhkY2NhZQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMu
Y3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMu
aCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworYm9vbCBkb25lID0gZmFsc2U7CisKK1RFU1QoRE5TVGVzdCwgY2FuY2VsUmVzb2x2
ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNv
bnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50
NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1
bHQuaGFzX3ZhbHVlKCkpOworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBX
ZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKTsKKworICAgICAgICByZXR1cm47CisgICAgfTsK
KworICAgIGRvbmUgPSBmYWxzZTsKKyAgICByZXNvbHZlRE5TKGhvc3RuYW1lLCBpZGVudGlmaWVy
LCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgc3RvcFJlc29sdmVETlMoaWRlbnRpZmllcik7Cisg
ICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChETlNUZXN0LCBjYW50UmVzb2x2ZUROUykK
K3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0
cmluZyBob3N0bmFtZSA9IFN0cmluZygibm90YXZhbGlkZG9tYWluLm5vdGF2YWxpZGRvbWFpbiIp
OworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAxOworCisgICAgRE5TQ29tcGxldGlvbkhhbmRs
ZXIgY29tcGxldGlvbkhhbmRsZXIgPSBbXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisKKyAgICAgICAgQVNTRVJU
X0ZBTFNFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5l
cnJvcigpID09IFdlYkNvcmU6OkROU0Vycm9yOjpDYW50UmVzb2x2ZSk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFt
ZSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7
Cit9CisKK1RFU1QoRE5TVGVzdCwgcmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFs
aXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygi
d3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIERO
U0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRk
cmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
CisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFt
ZSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334157</attachid>
            <date>2018-02-19 05:48:50 -0800</date>
            <delta_ts>2018-02-19 06:12:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180219144848.patch</filename>
            <type>text/plain</type>
            <size>81147</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMmZmMTZmZjU4YjZmYzhlODU4ZDFkMzg0MThhZTNl
NjA0YTY1NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6
OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBBZGQgdGhl
IG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDogTmV3IGNs
YXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRpbmcKKyAg
ICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93cyBzdG9w
cGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVy
Q2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBw
bGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBs
ZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJl
c29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdpdGggdGhlIHNvdXAgbGlicmFy
eS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKTog
U3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEgR0NhbmNlbGxhYmxl
LgorCiAyMDE4LTAyLTEyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IGRlZmVyIGZvY3VzZWRVSUVsZW1lbnQgbm90aWZpY2F0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA4NDFkODI2MTdiNWY4ZTE5ZGViMjBkZDRkZDJjNmM4ODllZTk0YzRmLi41M2ZiNGM0MmUx
ZjI2ZGFmYjU0ODQzMDRkYTE3MzU3NTU5MTkwZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNpZmljIENv
Y29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBjbGFzcywg
bWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGljIGFuZCBk
ZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNoIGVuY2Fw
c3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4gYWxpYXMg
Y2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUgcmVzb2x2
ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIp
OiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRkcmVzcyBj
bGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0YyBsaWJy
YXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5TIEFQSSB0
byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRl
ZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRo
ZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+
TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGlt
cGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0
aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcg
dGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBt
YWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlv
bi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0
aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBE
TlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2RzIGluIHRo
ZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3VyZSBhbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnku
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
Lmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDItMTIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0
cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3ZmZjZjJjOGQ3OGVkMGVjLi4y
YzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCi0gICAgcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1NzNjNmJkNTNhYmM0ODcwMTNh
NDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4YWYzODc4MWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZTUzZjBhOWE4
Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1MDY2M2ExZTQ1NTI4Yjc1OTYx
ODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcwNSw2ICsxNzA1LDcgQEAgcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZkNjFlZmRjODM4ZTkwOTlhMS4u
MjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZO
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMzZDY1NTVjMGFjMDI5NS4uOWYy
MTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5OSw2ICsyMTk5
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjA0OCw4ICsxMjA1MCw5IEBA
CiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29u
dGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRjhFMTMyMTI1
NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGMzRGRTUwRTgy
RjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
TlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYy
N0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzQzUwMEFCNzVBNkUw
MDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAw
Q0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJRTRBMDA3ODQxQjgyMEVEMzAw
MkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlFNEEwMDc4MjFCODIwRUM4MDAy
QzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmgg
Ki8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAg
Ki8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICov
LApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0VFNjg0NEUx
MkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNUYy
REJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUIyRjM0
RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJCQkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLywKKwkJCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLywKIAkJCQk3RUU2
ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi8sCiAJCQkJ
N0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCAqLywKIAkJ
CQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMx
QTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAw
RDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRG
RTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0VFNjg0NkYx
MkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZy
YWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4
IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2NmYuLmUzY2M5MDhjZGZhYWFl
N2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFr
ZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMx
YjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
UmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzY2MjBjNDViYjc1YzliYjc4N2Q3
OWI4ZDFkMTQ1MGNlNmZjNDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZURO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0
aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUs
IGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZURO
Uyh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuc3RvcFJlc29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjZiMzg2OWY0ZDNiMjFjNDIyNzEwNzFlZmUwNWI3MDU3M2MxZjJhZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7
CitwdWJsaWM6CisgICAgSVBBZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAg
Y29uc3Qgc3RydWN0IGluX2FkZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2lu
X2FkZHI7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsK
K307CisKK2VudW0gY2xhc3MgRE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2Vs
bGVkIH07CisKK3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNp
bmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5T
QWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxl
dGlvbkhhbmRsZXImKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcFJlc29sdmVETlModWludDY0
X3QgaWRlbnRpZmllcik7CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVm
NWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjc4ODcxZGVjYTFiMWQ1ZDI5NmZmNDYzNjljMDNjMDNk
NmRkY2I4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDYgKzI3LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTUyLDcgKzYwLDcgQEAgc3RhdGljIGNv
bnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZl
UXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwog
fQpAQCAtNjAsOCArNjgsNiBAQCBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKICAgICA6IG1fdGlt
ZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3Rz
SW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCi0gICAgLCBtX2xhc3RQcm94
eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2lsbCBy
ZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24KICAg
ICAvLyBwbGF0Zm9ybXMgdGhhdCBoYXZlIGFuIGFzeW5jaHJvbm91cyBpbXBsZW1lbnRhdGlvbiBv
ZiB1cGRhdGVJc1VzaW5nUHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlNSZXNvbHZlUXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQxYzA1YWJiMTg2NWQ3
ZTJiZDJlZjBiOGFhLi45ZjkxZDIzMGE5NzM3OTA1MGQ4NjAzM2VlNWM1MTY4MDFkZDRlMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgRE5TUmVzb2x2ZVF1ZXVlX2gKICNkZWZpbmUg
RE5TUmVzb2x2ZVF1ZXVlX2gKIAorI2luY2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOSwzMCAr
NDAsMzQgQEAgY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZSgpOwor
ICAgIHZpcnR1YWwgfkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBE
TlNSZXNvbHZlUXVldWUmIHNpbmdsZXRvbigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlv
bkhhbmRsZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAg
ICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVz
dHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0K
K3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAK
ICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAg
c3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQ
cm94eTsKLSAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOworICAg
IGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUgeyAwIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3
Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0
ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBt
X2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0
YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBo
dHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIiku
Y3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBw
cm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJv
eHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5n
ZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBo
dHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsK
LSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZh
bHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCho
dHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVO
b25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291
bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBz
UHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8
IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0
UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCop
Ci17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhy
ZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkg
bm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRD
RihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0
ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0Lmxl
YWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNr
KCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xp
ZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVh
a2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vs
c2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1
bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAg
IENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRj
aEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDkxYzI2MTcwYmIyNzZiMDFhZGEwNWMzYzNkNzgx
MTZhZWMxODI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJM
b2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9S
TShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2lu
Z1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdz
ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAo
IXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0g
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgp
OworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0Nv
cHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsK
KworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5
QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEg
JiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NG
UHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50
ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25h
cnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlBy
b3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1Vz
aW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRp
YyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwg
Y29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5n
bGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMg
YWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgw
LCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7Cisg
ICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Cisg
ICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2ls
bCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQor
ICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFp
bigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3
ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNs
aWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwor
I2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0
QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShj
b25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29s
dmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE4MDc4YzdiOWY1MmIyNWFmMDQy
ZWU1MjIxMTNlNGI1MDIyMWQwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUodWludDY0
X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNp
bmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1
cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFt
ZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODJjMGQ3
NjlkMmE2ZjczYTUzZDdkMmI3ZTBjZTI5OTUyYzJjYzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywg
dWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImIC8qIGNvbXBs
ZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVD
dXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGVjZGIxN2IzNTljZjQxYTVhMjc1Y2QxYjA1NTliODZkMDEyOGFj
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1
ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVy
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1
cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWQ0YmRjYjljNmM2
MDFjYjUyN2I3Mjc4YTAyNzU2Yzc1YzhmOGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0w
LDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIK
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluaXRpYWxseSB0
cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5
IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7CitzdGF0aWMg
Ym9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisKK3N0YXRpYyBib29sIGRpZFJlc29sdmVQ
cm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBw
cm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3Qg
aXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVm
ZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgLy8gcmVzb2x2
aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVk
IGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBj
b25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBh
cmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhl
ciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYg
c3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQ
cm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29s
KiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9y
ZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWlu
aW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94
eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBp
c1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09i
amVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNV
c2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgR1JlZlB0
cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0
UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNvbHZlcik7CisKKyAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlD
YWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworfQorCitzdGF0aWMgdm9pZCBy
ZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBz
dGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RhdGljX2Nhc3Q8RE5TQ29tcGxldGlvbkhhbmRsZXIqPihkYXRhKTsK
KworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spIHsKKyAgICAgICAgRE5TRXJyb3Ig
ZXJyb3IgPSBETlNFcnJvcjo6VW5rbm93bjsKKworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewor
ICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX0NBTlRfUkVTT0xWRToKKyAgICAgICAgICAgIGVycm9y
ID0gRE5TRXJyb3I6OkNhbnRSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBETlNFcnJvcjo6
Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09VUF9TVEFUVVNf
T0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfTsKKworICAgICAgICAoKmNvbXBsZXRpb25IYW5kbGVyKShtYWtlVW5leHBlY3Rl
ZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3VwX2FkZHJl
c3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1dG8qIGlwQWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9z
b2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAgICBhZGRyZXNzZXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3NbaV0pKTsKKworICAgICgqY29tcGxl
dGlvbkhhbmRsZXIpKHsgYWRkcmVzc2VzIH0pOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3Vw
TmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBu
dWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKK30KKwordm9pZCBETlNSZXNvbHZl
UXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNv
dXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2Fu
Y2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19j
b250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2Fu
Y2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssICZjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBtX2NhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX2NhbmNlbEhhbmRsZXJzLnRha2UoaWRlbnRp
ZmllcikpCisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkM2ViM2Zk
OWEyNTcxZWNmODc0YmVmMWFlNmZkNTA0NmMwMGFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1YmxpYyBE
TlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fY2FuY2VsSGFuZGxlcnM7Cit9OworCit1c2luZyBE
TlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZm
OGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0j
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3Vy
ZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgot
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiog
dXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVz
ZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBk
aXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1
c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1l
czogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9m
IHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNo
b3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWlu
ZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJz
aG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlz
LCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlS
ZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJv
eHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBw
cm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgp
KTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQ
cm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsK
LSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZp
c1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3Rh
dGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJv
eHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVR
dWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVy
PiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBT
ZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7
Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2Fz
eW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5
UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUu
Y29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1Vz
aW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNz
KiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVj
cmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNz
aW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVz
b2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICho
b3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIu
LjNkZTMxNDM0YWE2MzAzNTdkYjM2ZGNhZTkxYWQ3MThjMzk2MTA0MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNy
ZWF0ZVRocmVhZCgpCkBAIC0xNjQsMTMgKzE2OCwxOCBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRl
cjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5l
dHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgYXV0byByZXNvbHZlciA9IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKGlkZW50aWZpZXIs
IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5j
ZWxsZWQpCisgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJy
b3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSks
IGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKworICAgICAg
ICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0
byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7
IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVy
KTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZl
cnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
CmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjFiZmFmYTQ2
YjcyMGMzYzIyMTNhNzExY2M3YmRjNjZkMWFiNzcxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApA
QCAtMzIsNjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCBy
ZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBj
b25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKKy8vIEZJWE1FOiBVc2UgdGhl
IGZ1bmN0aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS4KKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpE
TlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9V
TlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewot
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90
IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtS
VENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJl
ZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9z
dFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAg
ICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAg
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAo
Q0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4
KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0
IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nl
cy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFk
ZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJl
c3Nlcyk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+KG5l
dyBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKIH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZl
cihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZl
cjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0Nv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZl
cigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNl
dENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVu
a25vd24pKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1l
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29s
dmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBtX2lkZW50aWZpZXIs
IG1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rv
cCgpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhv
c3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KLXZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2
ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1Zjc2MjcyYzU4MDJiY2IwM2Vh
YjczNjQxODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNyBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a1JUQ1Jlc29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwg
Q2FuY2VsbGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2
ZXI+IGNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmKTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJy
b3I+OwotICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0gICAgQ29tcGxldGlvbkhhbmRs
ZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7
Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkRO
U0NvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODk4
ZDQyODM5OWQ2MmVhYzgwZGYwZDg3YjUzMjI4N2ZlODdlZTEwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VC
UlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9U
eXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgQVNTRVJUKGlu
Zm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EqPihpbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4g
dGhlIGNhbGxiYWNrLgorICAgICAgICByZXNvbHZlci0+Y29tcGxldGVkKG1ha2VVbmV4cGVjdGVk
KFdlYkNvcmU6OkROU0Vycm9yOjpVbmtub3duKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0g
KENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVfdCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRk
cmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNv
dW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRl
eCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAgICBhdXRvKiBhZGRyZXNz
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRC
eXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3Jl
OjpJUEFkZHJlc3MoKmFkZHJlc3MpKTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRlZCh7
IGFkZHJlc3NlcyB9KTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENS
ZXNvbHZlckNvY29hKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRl
bnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENS
ZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVu
c2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwg
a0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgp
LCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZI
b3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0
cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0
aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1f
aG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVX
aXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9v
cERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29s
dXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0Lmdl
dCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2Vs
bGVkKSk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OmNvbXBsZXRlZChXZWJD
b3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgYWRkcmVzc2VzT3JFcnJvcikKK3sKKyAgICBpZiAo
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYWRkcmVzc2VzT3JFcnJvcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODQxOThkMTZhMDEyZjQxYjNhMWFjN2U3
YTVlYWFlM2IzY2RiNDBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5j
bHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mg
d2hlbiB3ZSBjb21wbGV0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LgorY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0
d29ya1JUQ1Jlc29sdmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxl
ciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKSBmaW5hbDsKKworICAgIHZvaWQg
c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5h
bDsKKworICAgIHZvaWQgY29tcGxldGVkKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJik7
CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKaW5kZXggNjcwNTViZDdiM2MzZDRlM2Q2NWEzNWQ3Y2MxZTgxNmY4NWE0MjMzNy4uMGYy
NjNlOTQyZDUyMWNiMzkxODQwMGJlM2IyNjc1MGI1NDdkNTBkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
CkBAIC0zOSw2ICszOSw4IEBAIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKIAorTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKwogUGxhdGZvcm0vSVBDL2dsaWIv
R1NvY2tldE1vbml0b3IuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVu
dFVuaXguY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
IEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggM2I3ZTU2YTRlZjAyMzFkNTM4MTYxMDE5NjA3ZDA4MjM1OTE4NGFmZS4uZmQz
MzRmZjc4MGEwODQ1MDY4Y2YyZWEwNGJlYmU1OTYyZjZhYTY3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTIsNiArOTEyLDcgQEAK
IAkJNDEwNDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxREREMkZCNTAwRjAw
NkQwIC8qIFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAg
LyogUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJ
NDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FC
MDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDExMkI1NTUxRkEw
RUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4
NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFC
QTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2Vi
UlRDTmV0d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29y
a1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87
IH07CiAJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFE
RTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpAQCAtMzI3Myw2
ICszMjc0LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JU
Q1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdv
cmtSVENSZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlG
RDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ4MUY5RkQz
QUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3
b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsu
aDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENT
b2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JU
Q1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjA4LDYgKzYy
MTEsOCBAQAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlk
ZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdv
cmtSVENSZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5l
dHdvcmtSVENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3
OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1OTgxREU4NEZC
MDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3NTk5MURFODRG
QjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1OUQxREU4NEZC
MDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDU0Myw2
ICsxMDU0OCw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUg
LyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5
RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUx
MTY1NDMxODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2Vy
dmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1NDgyYWE0OWJkZDMwMzM5ZGY4YWRjZjVjZDZm
NTRkNDg4YTk0Zjc5Li4zNzg4MWIxYmJhZDVhMTgxNGQ0MDNjZGQ0Yjk5OWJkNDRkMGZlYjBlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTgtMDItMTkgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5j
b20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3IHVu
aXQgdGVzdHMgZm9yIGhlIHJlc29sdmUgYW5kIHN0b3BSZXNvbHZlIGZ1bmN0aW9ucy4gV2UgbmVl
ZCB0byBjb21waWxlIHRoZW0gZm9yIHRoZQorICAgICAgICBvdGhlciBwbGF0Zm9ybXMgd2hlbiB0
aGUgQVBJcyBhcmUgc3VwcG9ydGVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNw
cDoKKwogMjAxOC0wMi0xMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IENsYXNzaWZ5IHJlc291cmNlcyBhcyBw
cmV2YWxlbnQgYmFzZWQgb24gcmVkaXJlY3RzIHRvIG90aGVyIHByZXZhbGVudCByZXNvdXJjZXMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDRhZWY2OTUzY2QxNjE0YmY2
Y2YwM2NlMjI0OGFmYjNjNmQyZGU1ZjguLjYyMDJmNDZiYWYwYjMzNzg1Yzg1Y2FkNzJjNmIyODMz
YmU4ODdkNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtODcsNiAr
ODcsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
ZWJDb3JlL0NTU1BhcnNlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XZWJDb3JlL0ROUy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3Jl
L0dyaWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9ETlMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWE3N2RhN2EyYzBhNTc1NGVhMGRlNWVkZjA3NmI3NWJhZjhkY2NhZQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMu
Y3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMu
aCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworYm9vbCBkb25lID0gZmFsc2U7CisKK1RFU1QoRE5TVGVzdCwgY2FuY2VsUmVzb2x2
ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNv
bnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50
NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1
bHQuaGFzX3ZhbHVlKCkpOworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBX
ZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKTsKKworICAgICAgICByZXR1cm47CisgICAgfTsK
KworICAgIGRvbmUgPSBmYWxzZTsKKyAgICByZXNvbHZlRE5TKGhvc3RuYW1lLCBpZGVudGlmaWVy
LCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgc3RvcFJlc29sdmVETlMoaWRlbnRpZmllcik7Cisg
ICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChETlNUZXN0LCBjYW50UmVzb2x2ZUROUykK
K3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0
cmluZyBob3N0bmFtZSA9IFN0cmluZygibm90YXZhbGlkZG9tYWluLm5vdGF2YWxpZGRvbWFpbiIp
OworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAxOworCisgICAgRE5TQ29tcGxldGlvbkhhbmRs
ZXIgY29tcGxldGlvbkhhbmRsZXIgPSBbXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisKKyAgICAgICAgQVNTRVJU
X0ZBTFNFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5l
cnJvcigpID09IFdlYkNvcmU6OkROU0Vycm9yOjpDYW50UmVzb2x2ZSk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFt
ZSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7
Cit9CisKK1RFU1QoRE5TVGVzdCwgcmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFs
aXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygi
d3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIERO
U0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRk
cmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
CisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFt
ZSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334158</attachid>
            <date>2018-02-19 06:12:50 -0800</date>
            <delta_ts>2018-03-06 06:03:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180219151248.patch</filename>
            <type>text/plain</type>
            <size>81409</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4NDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjM5NzdmZDEzZGNjNjlh
Mzc1OGFkMTA1M2JiNDE4NmJmMmNhZGY1Mi4uMmZmMTZmZjU4YjZmYzhlODU4ZDFkMzg0MThhZTNl
NjA0YTY1NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EgY29kZSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6
OnJlc29sdmUpOiBEdW1teSBtZXRob2QsIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkROU1Jlc29sdmVRdWV1ZUNGOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oOiBBZGQgdGhl
IG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaDogTmV3IGNs
YXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGNsYXNzLCBhZGRpbmcKKyAg
ICAgICAgYSBIYXNNYXAgd2l0aCB0aGUgYWN0aXZlIG9wZXJhdGlvbnMsIGl0IGFsbG93cyBzdG9w
cGluZyB0aGVtLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVl
dWVTb3VwLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9ETlNTb3VwLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkV2l0aE9ic2VydmVy
Q2FsbGJhY2spOiBDYWxsZWQgd2hlbiB0aGUgcmVzdWx0IGFkZHJlc3MgZnJvbSB0aGUgc291cCBw
bGF0Zm9ybSBpcyByZWFkeSwKKyAgICAgICAgc2VuZHMgdGhlIGFkZHJlc3MgdG8gdGhlIGNvbXBs
ZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJl
c29sdmUpOiBMYXVuY2ggdGhlIHJlc29sdmUgb3BlcmF0aW9uIHdpdGggdGhlIHNvdXAgbGlicmFy
eS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKTog
U3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gb24gcHJvY2VzcyB3aXRoIGEgR0NhbmNlbGxhYmxl
LgorCiAyMDE4LTAyLTEyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IGRlZmVyIGZvY3VzZWRVSUVsZW1lbnQgbm90aWZpY2F0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA4NDFkODI2MTdiNWY4ZTE5ZGViMjBkZDRkZDJjNmM4ODllZTk0YzRmLi41M2ZiNGM0MmUx
ZjI2ZGFmYjU0ODQzMDRkYTE3MzU3NTU5MTkwZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDE4LTAyLTA4ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNpZmljIENv
Y29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBjbGFzcywg
bWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGljIGFuZCBk
ZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNoIGVuY2Fw
c3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4gYWxpYXMg
Y2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUgcmVzb2x2
ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIp
OiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRkcmVzcyBj
bGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0YyBsaWJy
YXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5TIEFQSSB0
byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4gdGhlIGRl
ZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBy
ZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVyIGluIHRo
ZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjp+
TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEgbmV3IGlt
cGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAgIHNvbHV0
aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQgdXNpbmcg
dGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3NlcyB0byBt
YWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVzb2x1dGlv
bi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1ha2UgdGhp
cyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0
b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAgIE5vdyB0
aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0IHVzZSBE
TlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2RzIGluIHRo
ZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3VyZSBhbGwg
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnku
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29h
Lmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDItMTIgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0
aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGlyZWN0
cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3ZmZjZjJjOGQ3OGVkMGVjLi4y
YzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCi0gICAgcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKICAgICBw
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1NzNjNmJkNTNhYmM0ODcwMTNh
NDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4YWYzODc4MWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
ICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0
d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyZTUzZjBhOWE4
Y2E5ZmQ5MGRmOTRhMjZlYWJhMzAwMjE0NDhiNTU5Li5lNDA4OGY1MDY2M2ExZTQ1NTI4Yjc1OTYx
ODAwZTA5MDlhNTVjMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcwNSw2ICsxNzA1LDcgQEAgcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Nvb2tp
ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCiBwbGF0
Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMTRkYzBkMWVkZDM2ZjM2OGNlNDMxMGZkNjFlZmRjODM4ZTkwOTlhMS4u
MjhmNTYyMjZiYjBmM2M2ODlmZGQ4NGFjOWM2N2NhYmVmMzRjZWE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0zMTIsNyArMzEyLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKIHBsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
Y2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZO
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYTMyNjI3OGI1YzZhMTNlNjBiZWVjOGE5YjMzZDY1NTVjMGFjMDI5NS4uOWYy
MTc4YzhmNmQ3ZDI3OGNlNDZmODA3NzM4Mzk0NGJkMDQ3YWJhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE5OSw2ICsyMTk5
LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDU3MTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVB
NTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxl
U3RyZWFtU2luay5oICovOyB9OwpAQCAtOTUyNyw2ICs5NTI4LDcgQEAKIAkJN0VFNjg0NUExMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUMxMkQyNkUzODAwRTc5
NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtU2lu
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjA0OCw4ICsxMjA1MCw5IEBA
CiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29tRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29u
dGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGlj
c0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRjhFMTMyMTI1
NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGMzRGRTUwRTgy
RjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
TlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYy
N0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5p
bWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzQzUwMEFCNzVBNkUw
MDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xODUzMiw2ICsxODUzNSw3IEBACiAJCQkJNTFBMDUyMzExMDU4Nzc0RjAw
Q0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJRTRBMDA3ODQxQjgyMEVEMzAw
MkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJCQlFNEEwMDc4MjFCODIwRUM4MDAy
QzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkxQUY4RTEzMjEyNTY1QTQ0NDUyMzBG
RjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmgg
Ki8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAg
Ki8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8qIEROU1Jlc29sdmVRdWV1ZS5oICov
LApAQCAtMjMyNTcsNyArMjMyNjEsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0VFNjg0NEUx
MkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNUYy
REJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovLAotCQkJCUIyRjM0
RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAgKi8sCisJCQkJQjJGMzRGRTgwRTgy
RjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCAqLywKKwkJCQk3RUU2ODQ1
QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLywKIAkJCQk3RUU2
ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi8sCiAJCQkJ
N0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCAqLywKIAkJ
CQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQu
Y3BwICovLApAQCAtMjcwOTUsNiArMjcxMDAsNyBAQAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMx
QTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAw
RDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRG
RTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0VFNjg0NkYx
MkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudEZy
YWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCmluZGV4
IDczYzAxNGYxNWMxODY0NzIzMmMzMzA4NjdjZjgyMTU4MjRiMDE2NmYuLmUzY2M5MDhjZGZhYWFl
N2YwMGYyNjAzODcyZGE1NTBlNmIwMDNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFr
ZQpAQCAtMjAsNyArMjAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYyYTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMx
YjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBiMmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
UmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAog
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzY2MjBjNDViYjc1YzliYjc4N2Q3
OWI4ZDFkMTQ1MGNlNmZjNDFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZURO
Uyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0
aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUs
IGlkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZURO
Uyh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuc3RvcFJlc29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAz
YzUzNzE3NWU2MmMuLjZiMzg2OWY0ZDNiMjFjNDIyNzEwNzFlZmUwNWI3MDU3M2MxZjJhZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV1BFKQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7
CitwdWJsaWM6CisgICAgSVBBZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKSk7CisgICAgICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAg
Y29uc3Qgc3RydWN0IGluX2FkZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2lu
X2FkZHI7IH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsK
K307CisKK2VudW0gY2xhc3MgRE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2Vs
bGVkIH07CisKK3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNp
bmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5T
QWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxl
dGlvbkhhbmRsZXImKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcFJlc29sdmVETlModWludDY0
X3QgaWRlbnRpZmllcik7CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJkZjQwYzNiZmJhYzVm
NWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjc4ODcxZGVjYTFiMWQ1ZDI5NmZmNDYzNjljMDNjMDNk
NmRkY2I4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDYgKzI3LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRl
ICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTUyLDcgKzYwLDcgQEAgc3RhdGljIGNv
bnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9OwogCiBETlNSZXNvbHZl
UXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0dXJuIHF1ZXVlOwog
fQpAQCAtNjAsOCArNjgsNiBAQCBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkKICAgICA6IG1fdGlt
ZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAgLCBtX3JlcXVlc3Rz
SW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCi0gICAgLCBtX2xhc3RQcm94
eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5nUHJveHkgd2lsbCBy
ZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQgZmlyc3Qgb24KICAg
ICAvLyBwbGF0Zm9ybXMgdGhhdCBoYXZlIGFuIGFzeW5jaHJvbm91cyBpbXBsZW1lbnRhdGlvbiBv
ZiB1cGRhdGVJc1VzaW5nUHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ETlNSZXNvbHZlUXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQxYzA1YWJiMTg2NWQ3
ZTJiZDJlZjBiOGFhLi45ZjkxZDIzMGE5NzM3OTA1MGQ4NjAzM2VlNWM1MTY4MDFkZDRlMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgRE5TUmVzb2x2ZVF1ZXVlX2gKICNkZWZpbmUg
RE5TUmVzb2x2ZVF1ZXVlX2gKIAorI2luY2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOSwzMCAr
NDAsMzQgQEAgY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95
ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZSgpOwor
ICAgIHZpcnR1YWwgfkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwogICAgIHN0YXRpYyBE
TlNSZXNvbHZlUXVldWUmIHNpbmdsZXRvbigpOwogCisgICAgdmlydHVhbCB2b2lkIHJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlv
bkhhbmRsZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAg
ICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVz
dHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0K
K3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsK
KyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAK
ICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAg
c3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQ
cm94eTsKLSAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lOworICAg
IGRvdWJsZSBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUgeyAwIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzlhNTdkOWQ4MjBlZDEzYjAwMmZkMWNkMmQ3
Yzg2ZThlMzcyMDJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIlRp
bWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oV0lOKQotI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgotI2luY2x1ZGUgPENGTmV0
d29yay9DRk5ldHdvcmsuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0
ZW1Qcm94eVNldHRpbmdzKCkpOwotICAgIGlmICghcHJveHlTZXR0aW5ncykgewotICAgICAgICBt
X2lzVXNpbmdQcm94eSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0
YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBo
dHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIiku
Y3JlYXRlQ0ZVUkwoKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBw
cm94eVNldHRpbmdzLmdldCgpKSk7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJv
eHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5n
ZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotCi0gICAgQ0ZJbmRleCBodHRwUHJveHlDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgQ0ZJbmRleCBo
dHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsK
LSAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZh
bHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleCho
dHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVO
b25lKSkKLSAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOwotICAgIGlmIChodHRwc1Byb3h5Q291
bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCks
IDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBz
UHJveHlDb3VudCA9IDA7Ci0KLSAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8
IGh0dHBzUHJveHlDb3VudDsKLX0KLQotc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0
UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCop
Ci17Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhy
ZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkg
bm93LgotICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRD
RihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7Ci0gICAgaWYgKCFob3N0KSB7Ci0gICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0
ID0geyAwLCAwLCAwLCAwLCAwIH07Ci0gICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0Lmxl
YWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNr
KCkuCi0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xp
ZW50Q2FsbGJhY2ssICZjb250ZXh0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKLSNpZiAhUExBVEZPUk0oV0lOKQotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVh
a2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vs
c2UKLSAgICAvLyBPbiBXaW5kb3dzLCB3ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1
bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNsaWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgotICAg
IENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotI2VuZGlmCi0gICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1
dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0QWRkcmVzc2VzLCAwKTsKLX0KLQotdm9pZCBwcmVmZXRj
aEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDkxYzI2MTcwYmIyNzZiMDFhZGEwNWMzYzNkNzgx
MTZhZWMxODI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGluIEphY2tzb24gIDxjb2xsaW5qQHdlYmtpdC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDRk5ldC5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJM
b2FkZXJSdW5Mb29wQ0YuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9S
TShJT1MpCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6dXBkYXRlSXNVc2lu
Z1Byb3h5KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdz
ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKKyAgICBpZiAo
IXByb3h5U2V0dGluZ3MpIHsKKyAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0g
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgp
OworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisKKyAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0Nv
cHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsK
KworICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5
QXJyYXkuZ2V0KCkpOworICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7CisgICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEg
JiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NG
UHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBQcm94eUNvdW50
ID0gMDsKKyAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25h
cnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlBy
b3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOworCisgICAgbV9pc1Vz
aW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Cit9CisKK3N0YXRp
YyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwg
Y29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2lu
Z2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5n
bGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMg
YWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KKyAgICBDRlJlbGVhc2UodGhlSG9zdCk7
Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVXaXRoTmFtZSgw
LCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFob3N0KSB7Cisg
ICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCAwLCAwLCAwLCAwIH07Cisg
ICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtSZWYoKTsgLy8gVGhlIGhvc3Qgd2ls
bCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCkuCisgICAgQm9vbGVhbiByZXN1bHQg
PSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50Q2FsbGJhY2ssICZjb250ZXh0KTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyNpZiAhUExBVEZPUk0oV0lOKQor
ICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobGVha2VkSG9zdCwgQ0ZSdW5Mb29wR2V0TWFp
bigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworI2Vsc2UKKyAgICAvLyBPbiBXaW5kb3dzLCB3
ZSBydW4gYSBzZXBhcmF0ZSB0aHJlYWQgd2l0aCBDRlJ1bkxvb3AsIHdoaWNoIGlzIHdoZXJlIGNs
aWVudENhbGxiYWNrIHdpbGwgYmUgY2FsbGVkLgorICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxv
b3AobGVha2VkSG9zdCwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwor
I2VuZGlmCisgICAgQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihsZWFrZWRIb3N0LCBrQ0ZIb3N0
QWRkcmVzc2VzLCAwKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cmVzb2x2ZShj
b25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29s
dmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE4MDc4YzdiOWY1MmIyNWFmMDQy
ZWU1MjIxMTNlNGI1MDIyMWQwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUg
eworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUodWludDY0
X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNp
bmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0g
PSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1
cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFt
ZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODJjMGQ3
NjlkMmE2ZjczYTUzZDdkMmI3ZTBjZTI5OTUyYzJjYzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERO
U1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywg
dWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImIC8qIGNvbXBs
ZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVD
dXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGVjZGIxN2IzNTljZjQxYTVhMjc1Y2QxYjA1NTliODZkMDEyOGFj
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1
ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVy
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1
cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWQ0YmRjYjljNmM2
MDFjYjUyN2I3Mjc4YTAyNzU2Yzc1YzhmOGQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0w
LDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIK
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluaXRpYWxseSB0
cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5
IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7CitzdGF0aWMg
Ym9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisKK3N0YXRpYyBib29sIGRpZFJlc29sdmVQ
cm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBw
cm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3Qg
aXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVm
ZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgLy8gcmVzb2x2
aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVk
IGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBj
b25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBh
cmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhl
ciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYg
c3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQ
cm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29s
KiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9y
ZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWlu
aW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94
eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBp
c1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09i
amVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNV
c2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgR1JlZlB0
cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0
UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNvbHZlcik7CisKKyAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlD
YWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworfQorCitzdGF0aWMgdm9pZCBy
ZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBz
dGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RhdGljX2Nhc3Q8RE5TQ29tcGxldGlvbkhhbmRsZXIqPihkYXRhKTsK
KworICAgIGlmIChzdGF0dXMgIT0gU09VUF9TVEFUVVNfT0spIHsKKyAgICAgICAgRE5TRXJyb3Ig
ZXJyb3IgPSBETlNFcnJvcjo6VW5rbm93bjsKKworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewor
ICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX0NBTlRfUkVTT0xWRToKKyAgICAgICAgICAgIGVycm9y
ID0gRE5TRXJyb3I6OkNhbnRSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBETlNFcnJvcjo6
Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09VUF9TVEFUVVNf
T0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfTsKKworICAgICAgICAoKmNvbXBsZXRpb25IYW5kbGVyKShtYWtlVW5leHBlY3Rl
ZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3VwX2FkZHJl
c3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1dG8qIGlwQWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oc291cF9hZGRyZXNzX2dldF9z
b2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAgICBhZGRyZXNzZXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3NbaV0pKTsKKworICAgICgqY29tcGxl
dGlvbkhhbmRsZXIpKHsgYWRkcmVzc2VzIH0pOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3Vw
TmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBu
dWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKK30KKwordm9pZCBETlNSZXNvbHZl
UXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNv
dXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2Fu
Y2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRy
ZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19j
b250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2Fu
Y2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssICZjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBtX2NhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKGF1dG8gY2FuY2VsbGFibGUgPSBtX2NhbmNlbEhhbmRsZXJzLnRha2UoaWRlbnRp
ZmllcikpCisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNhbmNlbGxhYmxlLmdldCgpKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkM2ViM2Zk
OWEyNTcxZWNmODc0YmVmMWFlNmZkNTA0NmMwMGFiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1YmxpYyBE
TlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJikgZmluYWw7CisgICAgdm9pZCBzdG9w
UmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0
Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+IG1fY2FuY2VsSGFuZGxlcnM7Cit9OworCit1c2luZyBE
TlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZm
OGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNs
dWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0j
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3Vy
ZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgot
c3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5n
SHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiog
dXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVz
ZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBk
aXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1
c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1l
czogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9m
IHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNo
b3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWlu
ZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJz
aG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlz
LCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlS
ZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJv
eHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+
IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29r
dXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChl
cnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBw
cm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgp
KTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQ
cm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhH
T2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsK
LSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZp
c1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3Rh
dGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNl
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2
ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJv
eHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVR
dWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVy
PiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBT
ZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7
Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2Fz
eW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5
UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94
eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUu
Y29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1Vz
aW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNz
KiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVj
cmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNz
aW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVz
b2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICho
b3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIu
LjNkZTMxNDM0YWE2MzAzNTdkYjM2ZGNhZTkxYWQ3MThjMzk2MTA0MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNy
ZWF0ZVRocmVhZCgpCkBAIC0xNjQsMTMgKzE2OCwxOCBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRl
cjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bgogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5l
dHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgYXV0byByZXNvbHZlciA9IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKGlkZW50aWZpZXIs
IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5j
ZWxsZWQpCisgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJy
b3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSks
IGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpT
ZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKworICAgICAg
ICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0
byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7
IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVy
KTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZl
cnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
CmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjFiZmFmYTQ2
YjcyMGMzYzIyMTNhNzExY2M3YmRjNjZkMWFiNzcxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApA
QCAtMzIsNjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCBy
ZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBj
b25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKKy8vIEZJWE1FOiBVc2UgdGhl
IGZ1bmN0aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS4KKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpE
TlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9V
TlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewot
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90
IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtS
VENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJl
ZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9z
dFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAg
ICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAg
IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAo
Q0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4
KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0
IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nl
cy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFk
ZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJl
c3Nlcyk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+KG5l
dyBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKIH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZl
cihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZl
cjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0Nv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZl
cigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNl
dENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVu
a25vd24pKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmlu
ZyYgYWRkcmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1l
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29s
dmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBtX2lkZW50aWZpZXIs
IG1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3Rv
cCgpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhv
c3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KLXZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRk
cmVzcz4mIGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2
ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1Zjc2MjcyYzU4MDJiY2IwM2Vh
YjczNjQxODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNyBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a1JUQ1Jlc29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwg
Q2FuY2VsbGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2
ZXI+IGNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmKTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJy
b3I+OwotICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdvcmtSVENSZXNvbHZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2
aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENS
ZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0gICAgQ29tcGxldGlvbkhhbmRs
ZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7
Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkRO
U0NvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MWZk
YjU1NTI3OWViZTBiMjIxNzFlNTJlYzAwNzE2NTk4YjE1OTk1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VC
UlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9U
eXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgQVNTRVJUKGlu
Zm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EqPihpbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4g
dGhlIGNhbGxiYWNrLgorICAgICAgICByZXNvbHZlci0+Y29tcGxldGVkKG1ha2VVbmV4cGVjdGVk
KFdlYkNvcmU6OkROU0Vycm9yOjpVbmtub3duKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0g
KENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVfdCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRk
cmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNv
dW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRl
eCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAgICBhdXRvKiBhZGRyZXNz
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRC
eXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3Jl
OjpJUEFkZHJlc3MoKmFkZHJlc3MpKTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRlZCh7
IGFkZHJlc3NlcyB9KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4g
TmV0d29ya1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6
RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4obmV3IE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7Cit9CisKK05l
dHdvcmtSVENSZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdvcmtS
VENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9o
b3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7
CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9
CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRk
cmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIENG
SG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFt
ZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgp
LCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQm9v
bGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NG
SG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0b3AoKQoreworICAgIENG
SG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtD
Rkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVu
ZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCkpOworfQorCit2b2lkIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hOjpjb21wbGV0ZWQoV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJv
ciYmIGFkZHJlc3Nlc09yRXJyb3IpCit7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGFkZHJlc3Nlc09yRXJyb3IpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTg0MTk4ZDE2YTAxMmY0MWIzYTFhYzdlN2E1ZWFhZTNiM2NkYjQwZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZl
ci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIHdoZW4gd2UgY29tcGxldGUgdGhlIGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBETlNSZXNvbHZlUXVldWVDRk5ldC4KK2NsYXNzIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3QgaWRlbnRp
ZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtSVENS
ZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRk
cmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyAgICB2b2lkIGNvbXBsZXRl
ZChXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYpOworCitwcml2YXRlOgorICAgIFJldGFp
blB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IDY3MDU1YmQ3YjNj
M2Q0ZTNkNjVhMzVkN2NjMWU4MTZmODVhNDIzMzcuLjBmMjYzZTk0MmQ1MjFjYjM5MTg0MDBiZTNi
MjY3NTBiNTQ3ZDUwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMzksNiArMzksOCBAQCBOZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAogTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dFNvdXAuY3BwCiAKK05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwCisKIFBsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNwcCBAbm8t
dW5pZnkKIFBsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcCBAbm8tdW5pZnkKIFBs
YXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiN2U1NmE0ZWYw
MjMxZDUzODE2MTAxOTYwN2QwODIzNTkxODRhZmUuLmZkMzM0ZmY3ODBhMDg0NTA2OGNmMmVhMDRi
ZWJlNTk2MmY2YWE2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTEyLDYgKzkxMiw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYw
MDZEMCAvKiBSVENOZXR3b3JrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAq
LzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUw
MEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3
NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgKi87IH07CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRD
TmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJ
NDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMw
MDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdv
cmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMyNzMsNiArMzI3NCw4IEBACiAJCTQxMDQ4MkND
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JU
Q1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2
MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3
NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIwOCw2ICs2MjExLDggQEAKIAkJCQk0MURDNDU5ODFF
M0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJ
CTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAog
CQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywK
KwkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwICovLAorCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oICovLAogCQkJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5oICovLAogCQkJCTQxMzA3NTlEMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0Lm1lc3NhZ2VzLmluICovLApAQCAtMTA1NDMsNiArMTA1NDgsNyBAQAogCQkJCTQxREM0
NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBF
Njc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJC
NTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0
d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgy
ODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNTQ4MmFhNDliZGQzMDMzOWRmOGFkY2Y1Y2Q2ZjU0ZDQ4OGE5NGY3OS4uMzc4ODFiMWJi
YWQ1YTE4MTRkNDAzY2RkNGI5OTliZDQ0ZDBmZWIwZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAyLTE5ICBB
bGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0
d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB1bml0IHRlc3RzIGZvciBoZSByZXNvbHZl
IGFuZCBzdG9wUmVzb2x2ZSBmdW5jdGlvbnMuIFdlIG5lZWQgdG8gY29tcGlsZSB0aGVtIGZvciB0
aGUKKyAgICAgICAgb3RoZXIgcGxhdGZvcm1zIHdoZW4gdGhlIEFQSXMgYXJlIHN1cHBvcnRlZC4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHA6CisKIDIwMTgtMDItMTIgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBT
dGF0aXN0aWNzOiBDbGFzc2lmeSByZXNvdXJjZXMgYXMgcHJldmFsZW50IGJhc2VkIG9uIHJlZGly
ZWN0cyB0byBvdGhlciBwcmV2YWxlbnQgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCA0YWVmNjk1M2NkMTYxNGJmNmNmMDNjZTIyNDhhZmIzYzZkMmRlNWY4
Li42MjAyZjQ2YmFmMGIzMzc4NWM4NWNhZDcyYzZiMjgzM2JlODg3ZDQzIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTg3LDYgKzg3LDcgQEAgYWRkX2V4ZWN1dGFibGUo
VGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9DU1NQYXJzZXIuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9ETlMuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9HcmlkUG9zaXRpb24uY3BwCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNzdkYTdh
MmMwYTU3NTRlYTBkZTVlZGYwNzZiNzViYWY4ZGNjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcApAQCAtMCwwICsxLDEwNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVXRpbGl0aWVz
LmgiCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L0ROUy5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0
Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2Jvb2wgZG9uZSA9IGZh
bHNlOworCitURVNUKEROU1Rlc3QsIGNhbmNlbFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBT
dHJpbmcoInd3dy53ZWJraXQub3JnIik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IDE7CisK
KyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6
OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBkb25lID0g
dHJ1ZTsKKworICAgICAgICBBU1NFUlRfRkFMU0UocmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUocmVzdWx0LmVycm9yKCkgPT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNl
bGxlZCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgcmVzb2x2ZUROUyhob3N0bmFtZSwgaWRlbnRpZmllciwgY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHN0b3BSZXNvbHZlRE5TKGlkZW50aWZpZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9
CisKK1RFU1QoRE5TVGVzdCwgY2FudFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlh
bGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmco
Im5vdGF2YWxpZGRvbWFpbi5ub3RhdmFsaWRkb21haW4iKTsKKyAgICB1aW50NjRfdCBpZGVudGlm
aWVyID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0g
W10oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVl
KCkpOworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNF
cnJvcjo6Q2FudFJlc29sdmUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9u
ZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKEROU1Rlc3QsIHJl
c29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAg
ICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53ZWJraXQub3JnIik7CisgICAg
dWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfVFJVRShy
ZXN1bHQuaGFzX3ZhbHVlKCkpOworCisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9u
ZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335087</attachid>
            <date>2018-03-06 06:03:07 -0800</date>
            <delta_ts>2018-03-06 06:12:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180306150305.patch</filename>
            <type>text/plain</type>
            <size>83622</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI3ZmViMDEyN2E4NjU0
N2FkMmJiYjUxNDllZGIzODQxMTU4N2Y3OS4uYWQ4MTkxZjFkNTJjMGQ2NGZhNTA3MGU0ZWRhZWVh
YzFlYzYyMjc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyIGZvciBDT0NPQSBjb2RlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVDRjo6cmVzb2x2ZSk6IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmg6IEFk
ZCB0aGUgbmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cmVzb2x2ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oOiBO
ZXcgY2xhc3MgaW5oZXJpdGluZyBmcm9tIHRoZSBETlNSZXNvbHZlUXVldWUgY2xhc3MsIGFkZGlu
ZworICAgICAgICBhIEhhc01hcCB3aXRoIHRoZSBhY3RpdmUgb3BlcmF0aW9ucywgaXQgYWxsb3dz
IHN0b3BwaW5nIHRoZW0uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29s
dmVRdWV1ZVNvdXAuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU1NvdXAuY3BwLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjayk6IENhbGxlZCB3aGVuIHRoZSByZXN1bHQgYWRkcmVzcyBmcm9tIHRoZSBz
b3VwIHBsYXRmb3JtIGlzIHJlYWR5LAorICAgICAgICBzZW5kcyB0aGUgYWRkcmVzcyB0byB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291
cDo6cmVzb2x2ZSk6IExhdW5jaCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gd2l0aCB0aGUgc291cCBs
aWJyYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBwcm9jZXNzIHdpdGggYSBHQ2FuY2Vs
bGFibGUuCisKIDIwMTgtMDMtMDIgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5j
b20+CiAKICAgICAgICAgTWFrZSBMaWJXZWJSVENQcm92aWRlciBwb3J0IGFnbm9zdGljIGFnYWlu
IGFmdGVyIHIyMTU0MjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2I0ZmI1YmFjYmE5NjYwMmRhZjBlNGI1ZTU4ZTIx
OGU0ZTQ2NTZkNS4uOWJlZjA3NTU4NDA0NjUyNGE3ODE2MDQzODhlY2Q3MjNhY2Y2MjZlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOC0wMi0wOCAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBNYWtlIE5ldHdvcmtSVENSZXNvbHZlciBwb3J0
IGFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzg4NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDcmVhdGUgYSBzcGVjaWZpYyBDb2NvYSBjbGFzcyB0byBpc29sYXRlIHRoZSBnZW5lcmljIGNv
ZGUgaW4gdGhlIGJhc2UgY2xhc3MsIG1ha2UgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gcG9ydAor
ICAgICAgICBhZ25vc3RpYyBhbmQgZGVwZW5kZW50IG9uIEROUyBBUEkgaW4gdGhlIHBsYXRmb3Jt
IGRpcmVjdG9yeSB3aGljaCBlbmNhcHN1bGF0ZXMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRldGFp
bHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVy
LmNwcDogQ3JlYXRlIGFuIGFsaWFzIGNsYXNzIG5hbWUgZGVmaW5lZCBwZXIgcGxhdGZvcm0gdG8g
aW5zdGFudGlhdGUgdGhlIHJlc29sdmVyLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJv
dmlkZXI6OmNyZWF0ZVJlc29sdmVyKTogVXNlZCB0aGUgYWxpYXMgY2xhc3MgbmFtZSBhbmQgcmVj
ZWl2ZSBhIG5ldyBJUEFkZHJlc3MgY2xhc3MgdGhhdCBpcyBub3QKKyAgICAgICAgZGVwZW5kZW50
IG9uIHJ0YyBsaWJ3ZWJydGMgbGlicmFyeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBj
b2RlLiBVc2UgdGhlIEROUyBBUEkgdG8gaW1wbGVtZW50IHRoZQorICAgICAgICBwbGF0Zm9ybSBz
cGVjaWZpYyBjb2RlIGluIHRoZSBkZWZhdWx0IHN0YXJ0IGFuZCBzdG9wIG1ldGhvZHMuIEFkZCB0
aGUgaWRlbnRpZmllciBvZiB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gdG8gdGhlIGNsYXNzLgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcik6IEFk
ZCB0aGUgaWRlbnRpZmllciBpbiB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcik6IFJlbW92ZSB0aGUgcGxh
dGZvcm0gc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVy
Ojpjb21wbGV0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVy
OjpzdGFydCk6IEFkZCBhIG5ldyBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgRE5TIEFQSS4KKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKTogRGl0dG8KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg6IFJlbW92ZSB0aGUg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZSBhbmQgdXNlIHRoZSBETlNSZXNvbHZlUXVldWUgZm9yIGEg
Z2VuZXJhbAorICAgICAgICBzb2x1dGlvbiB0byBpbXBsZW1lbnQgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuIEF2b2lkIHVzaW5nIHRoZSBJUEFkZHJlc3MgY2xhc3MgdGhhdCBkZXBlbmRzIG9u
IGxpYndlcnRjIGNsYXNzZXMgdG8gbWFrZQorICAgICAgICBpdCBtb3JlIGdlbmVyYWwgcmVnYXJk
aW5nIEROUyBuYW1lIHJlc29sdXRpb24uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNv
bHZlcjo6c3RhcnQpOiBNYWtlIHRoaXMgY2xhc3MgdmlydHVhbC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDogQ29waWVkIENvY29hIGNvZGUg
ZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXIuY3BwLgorICAgICAgICBOb3cgdGhpcyBjbGFzcyBvdmVycmlkZXMgdGhlIHN0YXJ0IGFuZCBz
dG9wIG1ldGhvZHMgdGhhdCB1c2UgRE5TLCBjb2NvYSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgdXNl
IHRoZSBETlMgbWV0aG9kcyBpbiB0aGUgZnV0dXJlIGFuZAorICAgICAgICByZW1vdmUgdGhpcyBj
bGFzcywgbWFraW5nIHN1cmUgYWxsIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjbGFzcyBpcyBpbiB0
aGUgcGxhdGZvcm0gZGlyZWN0b3J5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oLgorICAgICAg
ICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBBZGQgTmV0d29ya1JUQ1Jlc29sdmVyIGNvbXBpbGF0aW9u
IGZvciBHVEsuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFk
ZCB0aGUgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgY2xhc3MgdG8gdGhlIGNvbXBpbGF0aW9uLgor
CiAyMDE4LTAzLTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
U2FmYXJpIHVzZXMgV2ViQ29udGVudC5EZXZlbG9wbWVudCB3aGVuIGxvYWRpbmcgaW5qZWN0ZWQg
YnVuZGxlIGVtYmVkZGVkIGluIGl0cyBhcHAgYnVuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZQppbmRleCBlZTdiNDA3MjBmMGQ4ZjZmYjIyZWExNmM3ZmZjZjJjOGQ3OGVkMGVj
Li4yYzA3ZjNhMmQ3MmQ3YTcxMzk5ZGVlZmRjOTI1Nzk2YWNkOGUxMGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTUwLDcgKzUwLDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwCi0gICAgcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29s
dmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzZTg3MjMzODk2MTJkZGQ1NzNjNmJkNTNhYmM0ODcw
MTNhNDQ3MzZmLi44MDUyMGFiMGZjZTBkZjQ4MzJmNzg3YjQ1YzExMGE4YWYzODc4MWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDEzLDcgKzQxMyw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLm1tCiAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNw
cAorICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyM2E5NDAz
NGVhOTM0NDM5M2Y5OWQwNGExOTI4MmViMWM4NjU2ZDVjLi43ODhjZmRiNDQ2Njg1M2YyYmZmMzNk
ZjYyMmFkZDgzMjI4YzcyNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTcwNyw2ICsxNzA3LDcgQEAg
cGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Nv
b2tpZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuY3BwCiBwbGF0Zm9ybS9u
ZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCiBw
bGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTERlY29kZXIuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggODU0OWJlMzQxMzY3MmEwOTZlYWUyMjdmOWE2ZGFmYzQ0M2M2MTJj
Yi4uNWJlMjU1YmNlNDJmMGVjYTE0M2I4YjczM2QzMmMwMjM1NTg4ZWU3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC00ODIsNyArNDgyLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0
TW9jay5jcHAKIAotcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKK3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDQ4YzhkMWY4MDM3ZmI4OTBiMzM0YjdlMDBhNGQ5ODBkYzI3YTNjZjAuLjUzZWVjMmIw
MjYzYWIwMmRlMDJiMDBjNzA1YmE3NDVmZGVlOTU1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyNTUsNiArMjI1NSw3IEBA
CiAJCTdFRTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NzEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJl
cXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
RTY4NDVBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RjEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlcXVlc3RDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5l
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0
NUMxMkQyNkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzAxMkQyNkUzODAw
RTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJl
c3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaEJvZHkuaCAqLzsgfTsKIAkJN0Y0Qzk2REQxQUQ0NDgzNTAwMzY1QTUxIC8q
IEpTUmVhZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3RjRDOTZEOTFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVh
bVNpbmsuaCAqLzsgfTsKQEAgLTk2MDQsNiArOTYwNSw3IEBACiAJCTdFRTY4NDVBMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdF
RTY4NDVCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVDMTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VS
ZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RjRDOTZEODFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNGZXRjaEJvZHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
RjRDOTZEODFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVNpbmsuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIxMjUsOCArMTIxMjcsOSBAQAogCQlC
MkU0RUM5NTBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjJFNEVDOTYwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR1pvb21FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRD
Ry5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250
ZXh0Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUY4RTEzMjEyNTY1QTQ0
NDUyMzBGRjcgLyogRE5TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEROUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRjM0RkU1MEU4MkY4MTQw
MEY2MjdDRCAvKiBETlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE5TLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAv
KiBETlNDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlND
Rk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRjM0RkU4MEU4MkY4Mjcw
MEY2NDhDRCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyRkEzQzRFMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVD
b2xvckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyRkEzQzRGMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M1MDBBQjc1QTZFMDAwRTVB
QzQgLyogSlNTVkdBbmltYXRlZEFuZ2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTg3MjEsNiArMTg3MjQsNyBAQAogCQkJCTUxQTA1MjMxMTA1ODc3NEYwMENDOUU5
NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oICovLAogCQkJCUU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2
RSAvKiBEYXRhVVJMRGVjb2Rlci5jcHAgKi8sCiAJCQkJRTRBMDA3ODIxQjgyMEVDODAwMkM1QTZF
IC8qIERhdGFVUkxEZWNvZGVyLmggKi8sCisJCQkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8q
IEROUy5jcHAgKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAog
CQkJCTdDNjAxMjgwNjAwNzhCQjcwRTM2N0E5NSAvKiBETlNSZXNvbHZlUXVldWUuY3BwICovLAog
CQkJCUZBNkU0NjZGQ0QwNDE4QTk5NjZBNUI2MCAvKiBETlNSZXNvbHZlUXVldWUuaCAqLywKQEAg
LTIzNDQ3LDcgKzIzNDUxLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdFRTY4NDRFMTJEMjZF
MzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTVGMkRCQkU4
MTc4RTMzNjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm8uaCAqLywKLQkJCQlCMkYzNEZFODBF
ODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAorCQkJCUIyRjM0RkU4MEU4MkY4Mjcw
MEY2NDhDRCAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAgKi8sCisJCQkJN0VFNjg0NUMxMkQy
NkUzODAwRkY5NDE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTMx
MkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4
NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8sCiAJCQkJRTEz
RUYzNDcxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCAq
LywKQEAgLTI3MzExLDYgKzI3MzE2LDcgQEAKIAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkg
LyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlD
OSAvKiBEaXN0YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4
MkY4MTQwMEY2MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3MzIxNSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTgxODVGNDAwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBM0JCNTlGNDE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODE4NUYzRDA5NzY1NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRGcmFnbWVu
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
dXJsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQppbmRleCA0YTgy
ZWIwOTlmNWYyNzIwY2JlM2QyNWQzNjkxMDM1YjU2YzBiY2Y4Li40ODA2MGI4NTNiZWNjOWRiYjE5
M2VjNmJjODkyOGE3NGMzODlhZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DdXJsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKQEAg
LTIxLDcgKzIxLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMVmVyaWZpZXIuY3BwCi0gICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwu
Y3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Tb3VyY2VzU291cC50eHQKaW5kZXggOGU0N2Q2MmEzODYzMTI3MjI2ZWVkOTQ3MWIzZDMyODZj
MWIyOTc5NS4uZDY0ZmNmYmVhMjgxNDdkYWRmNDMwYjJmZmI0YzBmZWE2MGI5NWQ4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dApAQCAtMjcsNyArMjcsNyBAQCBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKLXBs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAorcGxhdGZvcm0vbmV0d29yay9zb3VwL0RO
U1Jlc29sdmVRdWV1ZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAu
Y3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAK
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzExMjJkYjNkODY3ZWJlNmRjMDcy
OTIxMjBmZWU5NzZlMjM4MjUzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJETlMuaCIKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBwcmVmZXRjaEROUyhj
b25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOworfQorCit2b2lkIHJlc29sdmVE
TlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkucmVzb2x2ZShob3N0bmFt
ZSwgaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIHN0
b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5zdG9wUmVzb2x2ZShpZGVudGlmaWVyKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKaW5kZXggMjkwZjQwNjM0Yzg1ODhiZDFl
M2IyZTZkN2RjMDNjNTM3MTc1ZTYyYy4uZjA3YWNiNTFkNjVkYjAwYzE1MGRmNDAxNjUwZDYxODZl
YjI1Zjk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oCkBAIC0yMywxNCAr
MjMsMzkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBETlNfaAotI2RlZmluZSBE
TlNfaAorI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VsaWYgUExBVEZP
Uk0oV0lOKQorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVBBZGRyZXNzIHsKK3B1YmxpYzoKKyAgICBJUEFkZHJlc3MoY29uc3Qgc3RydWN0IHNvY2thZGRy
X2luJiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbWVtc2V0KCZtX2FkZHJlc3MsIDAsIHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICAgICAgbV9hZGRyZXNzID0gYWRkcmVzczsKKyAg
ICB9CisKKyAgICBjb25zdCBzdHJ1Y3QgaW5fYWRkciYgZ2V0U2luQWRkcigpIHsgcmV0dXJuIG1f
YWRkcmVzcy5zaW5fYWRkcjsgfTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4g
bV9hZGRyZXNzOworfTsKKworZW51bSBjbGFzcyBETlNFcnJvciB7IFVua25vd24sIENhbnRSZXNv
bHZlLCBDYW5jZWxsZWQgfTsKKwordXNpbmcgRE5TQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVk
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4+LCBETlNF
cnJvcj47Cit1c2luZyBETlNDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChETlNBZGRyZXNzZXNPckVycm9yJiYpPjsKKwogV0VCQ09SRV9FWFBPUlQgdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKLX0KK1dFQkNPUkVfRVhQT1JUIHZv
aWQgcmVzb2x2ZUROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVy
LCBETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcFJlc29s
dmVETlModWludDY0X3QgaWRlbnRpZmllcik7CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCmluZGV4IGE4YzJk
ZjQwYzNiZmJhYzVmNWMzOTI5YmNhMzM5MzAwZjBhMDI2MTguLjc4ODcxZGVjYTFiMWQ1ZDI5NmZm
NDYzNjljMDNjMDNkNmRkY2I4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKQEAgLTI3LDYgKzI3LDE0IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAKKyNpZiBVU0UoU09V
UCkKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVTb3VwLmgiCisjZWxpZiBVU0UoQ1VSTCkKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisjZWxpZiBVU0UoQ0YpCisjaW5jbHVkZSAi
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTUyLDcgKzYwLDcg
QEAgc3RhdGljIGNvbnN0IFNlY29uZHMgcmVzb2x2aW5nUmV0cnlEZWxheSB7IDEwMF9tcyB9Owog
CiBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkKIHsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPiBxdWV1ZTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0+IHF1ZXVlOwogCiAgICAgcmV0
dXJuIHF1ZXVlOwogfQpAQCAtNjAsOCArNjgsNiBAQCBETlNSZXNvbHZlUXVldWUmIEROU1Jlc29s
dmVRdWV1ZTo6c2luZ2xldG9uKCkKIEROU1Jlc29sdmVRdWV1ZTo6RE5TUmVzb2x2ZVF1ZXVlKCkK
ICAgICA6IG1fdGltZXIoKnRoaXMsICZETlNSZXNvbHZlUXVldWU6OnRpbWVyRmlyZWQpCiAgICAg
LCBtX3JlcXVlc3RzSW5GbGlnaHQoMCkKLSAgICAsIG1faXNVc2luZ1Byb3h5KHRydWUpCi0gICAg
LCBtX2xhc3RQcm94eUVuYWJsZWRTdGF0dXNDaGVja1RpbWUoMCkKIHsKICAgICAvLyBpc1VzaW5n
UHJveHkgd2lsbCByZXR1cm4gdGhlIGluaXRpYWwgdmFsdWUgb2YgbV9pc1VzaW5nUHJveHkgYXQg
Zmlyc3Qgb24KICAgICAvLyBwbGF0Zm9ybXMgdGhhdCBoYXZlIGFuIGFzeW5jaHJvbm91cyBpbXBs
ZW1lbnRhdGlvbiBvZiB1cGRhdGVJc1VzaW5nUHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaAppbmRleCBkMmE3YTc3YjhiY2M0OGQx
YzA1YWJiMTg2NWQ3ZTJiZDJlZjBiOGFhLi4xN2E2NDAyMWMxYTBhMTMwYjhiMWY2NzMxOTA4ZDE0
N2M3NDdmMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
U1Jlc29sdmVRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgRE5TUmVzb2x2ZVF1ZXVl
X2gKICNkZWZpbmUgRE5TUmVzb2x2ZVF1ZXVlX2gKIAorI2luY2x1ZGUgIkROUy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CkBAIC0zOSwzMCArNDAsMzQgQEAgY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlIHsKICAgICBmcmllbmQg
TmV2ZXJEZXN0cm95ZWQ8RE5TUmVzb2x2ZVF1ZXVlPjsKIAogcHVibGljOgorICAgIEROU1Jlc29s
dmVRdWV1ZSgpOworICAgIHZpcnR1YWwgfkROU1Jlc29sdmVRdWV1ZSgpID0gZGVmYXVsdDsKKwog
ICAgIHN0YXRpYyBETlNSZXNvbHZlUXVldWUmIHNpbmdsZXRvbigpOwogCisgICAgdmlydHVhbCB2
b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwg
RE5TQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wUmVzb2x2
ZSh1aW50NjRfdCBpZGVudGlmaWVyKSA9IDA7CiAgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSk7CiAgICAgdm9pZCBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKQogICAgIHsKICAgICAg
ICAgLS1tX3JlcXVlc3RzSW5GbGlnaHQ7CiAgICAgfQogCi1wcml2YXRlOgotICAgIEROU1Jlc29s
dmVRdWV1ZSgpOwotCitwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1VzaW5nUHJveHkoKTsKIAotICAg
IHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCk7Ci0gICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJik7CisgICAgYm9vbCBtX2lzVXNpbmdQcm94eSB7IHRydWUgfTsKIAorcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZvaWQgdGlt
ZXJGaXJlZCgpOwogCiAgICAgVGltZXIgbV90aW1lcjsKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X25hbWVzOwogICAgIHN0ZDo6YXRvbWljPGludD4gbV9yZXF1ZXN0c0luRmxpZ2h0OwotICAgIGJv
b2wgbV9pc1VzaW5nUHJveHk7Ci0gICAgZG91YmxlIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0No
ZWNrVGltZTsKKyAgICBkb3VibGUgbV9sYXN0UHJveHlFbmFibGVkU3RhdHVzQ2hlY2tUaW1lIHsg
MCB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc5YTU3ZDlkODIwZWQx
M2IwMDJmZDFjZDJkN2M4NmU4ZTM3MjAyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NG
TmV0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQub3JnPgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
RE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpbmNsdWRlICJVUkwuaCIK
LSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQot
I2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5k
aWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKLSNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5l
dHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKLSAgICBpZiAoIXByb3h5U2V0dGluZ3Mp
IHsKLSAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4
YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
aHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBD
RlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJM
KGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKLQotICAgIENGSW5kZXgg
aHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwot
ICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlB
cnJheS5nZXQoKSk7Ci0gICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwg
a0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKLSAgICBpZiAo
aHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0
aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94
eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQot
ICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOwotCi0gICAgbV9pc1VzaW5nUHJveHkgPSBodHRw
UHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsaWVudENh
bGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1F
cnJvciosIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVt
ZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEg
c2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGlu
aXRpYWxpemVkIGJ5IG5vdy4KLSAgICBDRlJlbGVhc2UodGhlSG9zdCk7Ci19Ci0KLXZvaWQgRE5T
UmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4g
aG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSkpOwotICAgIGlmICghaG9zdCkgewotICAgICAgICBkZWNyZW1lbnRSZXF1
ZXN0Q291bnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENGSG9zdENsaWVudENv
bnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OwotICAgIENGSG9zdFJlZiBsZWFrZWRI
b3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBj
bGllbnRDYWxsYmFjaygpLgotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxl
YWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7Ci0gICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Ci0jaWYgIVBMQVRGT1JNKFdJTikKLSAgICBDRkhvc3RTY2hlZHVsZVdp
dGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1v
bk1vZGVzKTsKLSNlbHNlCi0gICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhy
ZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJl
IGNhbGxlZC4KLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRl
clJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNlbmRpZgotICAgIENGSG9zdFN0
YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFkZHJlc3NlcywgMCk7Ci19Ci0K
LXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBkYWVlNjg5NDIyMDM3ZTc3
ODRkZDg3YTc5Njg3NjQ5ZjVmZDZhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCkBAIC0wLDAgKzEs
MTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGlu
akB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKworI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVUkwu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShXSU4p
CisjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJ
TikgfHwgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6
OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cHJveHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3Mo
KSk7CisgICAgaWYgKCFwcm94eVNldHRpbmdzKSB7CisgICAgICAgIG1faXNVc2luZ1Byb3h5ID0g
ZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGh0dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIiku
Y3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwo
UGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwor
CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5l
dHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRD
RihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRp
bmdzLmdldCgpKSk7CisKKyAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENv
dW50KGh0dHBQcm94eUFycmF5LmdldCgpKTsKKyAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9
IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOworICAgIGlmIChodHRwUHJv
eHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8
Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5Lmdl
dCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQorICAgICAgICBo
dHRwUHJveHlDb3VudCA9IDA7CisgICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1
YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5
cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsK
KworICAgIG1faXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50
OworfQorCitzdGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZI
b3N0SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKK3sKKyAgICBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9r
IHRvIGNhbGwgc2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMg
dmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cuCisgICAgQ0ZSZWxl
YXNlKHRoZUhvc3QpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpwbGF0Zm9ybVJl
c29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3Jl
YXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGlm
ICghaG9zdCkgeworICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwg
MCwgMCwgMCB9OworICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8v
IFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgorICAgIEJv
b2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNr
LCAmY29udGV4dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisjaWYgIVBM
QVRGT1JNKFdJTikKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENG
UnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbHNlCisgICAgLy8g
T24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGlj
aCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KKyAgICBDRkhvc3RTY2hl
ZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKKyNlbmRpZgorICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2Vk
SG9zdCwga0NGSG9zdEFkZHJlc3NlcywgMCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQ6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgdWludDY0X3QgLyogaWRl
bnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImJiAvKiBjb21wbGV0aW9uSGFuZGxlciAq
LykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNG
TmV0OjpzdG9wUmVzb2x2ZSh1aW50NjRfdCAvKiBpZGVudGlmaWVyICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzI1Y2E3
MWNiNzkwZDI5ZTIyNDg2Y2I0YWYyYWU2OGRmNzgyMDc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGTmV0IGZpbmFsIDogcHVibGljIERO
U1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQoKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgc3Rv
cFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxh
dGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2
ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5o
IgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5T
UmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3Ry
aW5nJiAvKiBob3N0bmFtZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMjMxYTc3OWVhMzI2OTU2Mzk0YjU2MThlZGE1ZGFmMTAyMGViZTUzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29s
dmVRdWV1ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lk
IEROU1Jlc29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29s
dmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAv
KiBob3N0bmFtZSAqLywgdWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhh
bmRsZXImJiAvKiBjb21wbGV0aW9uSGFuZGxlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IC8q
IGlkZW50aWZpZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNS
ZXNvbHZlUXVldWVDdXJsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
RE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Y2E3YzEyZmM4ZGM5NjE5NTIyNjk1
Njc2YWI5MGQ0ODIwMzg3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEROU1Jlc29sdmVRdWV1ZUN1cmwgZmluYWwgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsK
K3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVDdXJsKCkgPSBkZWZhdWx0OworICAgIHZvaWQg
cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlND
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90
IGlkZW50aWZpZXIpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJc1VzaW5n
UHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0g
RE5TUmVzb2x2ZVF1ZXVlQ3VybDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkxNWEwODQ3ODQ4YjljMzUwMjQwNDk3N2JkYzNhYTIyNDlhODcxZmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1
ZXVlU291cC5jcHAKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVz
b2x2ZVF1ZXVlU291cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRl
IDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVu
dGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5
ID0gdHJ1ZTsKK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKKworc3RhdGlj
IGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdlIGhhdmUgYSBs
aXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3Qg
aXRlbSBpbiB0aGUgbGlzdCBpcworICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0
aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIg
dG8KKyAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3Np
YmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisgICAgLy8gaWYg
d2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3Jk
ZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5
IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAgICByZXR1cm4g
dXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30KKworc3RhdGlj
IHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVz
dWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkK
K3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZVB0cjxjaGFy
Kj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwg
JmVycm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5t
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICppc1VzaW5nUHJveHlUeXBl
ID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJveHkgPSBpc1Vz
aW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMgdm9pZCBwcm94
eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZ
X1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0
PGJvb2wqPih1c2VyRGF0YSkpOworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0
cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lk
KiB1c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3Vy
Y2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJE
YXRhKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNVc2luZ1Byb3h5
KCkKK3sKKyAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAgICBnX29iamVj
dF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRP
ckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZl
ciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJlc29sdmVyKTsK
KworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0
cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJh
Y2ssICZtX2lzVXNpbmdQcm94eSk7CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMo
cmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVz
b2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQorCitzdGF0aWMg
dm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQoreworICAg
IEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cit9
CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3Mq
IGFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBBU1NFUlQoZGF0YSk7
CisgICAgYXV0byogcmVzb2x2ZVF1ZXVlID0gc3RhdGljX2Nhc3Q8RE5TUmVzb2x2ZVF1ZXVlU291
cCo+KGRhdGEpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IEdQT0lOVEVSX1RPX1VJTlQo
Z19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcyksICJpZGVudGlmaWVyIikpOworCisg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHJlc29sdmVRdWV1ZS0+Z2V0Q29tcGxldGlvbkhh
bmRsZXIoaWRlbnRpZmllcik7CisKKyAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKSB7CisgICAgICAg
IEROU0Vycm9yIGVycm9yID0gRE5TRXJyb3I6OlVua25vd247CisKKyAgICAgICAgc3dpdGNoIChz
dGF0dXMpIHsKKyAgICAgICAgY2FzZSBTT1VQX1NUQVRVU19DQU5UX1JFU09MVkU6CisgICAgICAg
ICAgICBlcnJvciA9IEROU0Vycm9yOjpDYW50UmVzb2x2ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX0NBTkNFTExFRDoKKyAgICAgICAgICAgIGVycm9yID0g
RE5TRXJyb3I6OkNhbmNlbGxlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNP
VVBfU1RBVFVTX09LOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH07CisKKyAgICAgICAgKCpjb21wbGV0aW9uSGFuZGxlcikobWFr
ZVVuZXhwZWN0ZWQoZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
c291cF9hZGRyZXNzX2lzX3Jlc29sdmVkKGFkZHJlc3MpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisgICAgaW50IGxlbjsKKyAgICBhdXRvKiBpcEFkZHJl
c3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KHNvdXBfYWRk
cmVzc19nZXRfc29ja2FkZHIoYWRkcmVzcywgJmxlbikpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplb2YoKmlwQWRkcmVzcykgLyBsZW47IGkrKykKKyAgICAgICAgYWRkcmVzc2Vz
LnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBBZGRyZXNzW2ldKSk7CisKKyAg
ICAoKmNvbXBsZXRpb25IYW5kbGVyKSh7IGFkZHJlc3NlcyB9KTsKKworICAgIHJlc29sdmVRdWV1
ZS0+cmVtb3ZlQ2FuY2VsQW5kQ29tcGxldGlvbkhhbmRsZXIoaWRlbnRpZmllcik7Cit9CisKK2Nv
bnN0IFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyKiBETlNSZXNvbHZlUXVldWVTb3VwOjpn
ZXRDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycyA9
IG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmZpbmQoaWRlbnRpZmllcik7CisKKyAgICBp
ZiAoY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzID09IG1fY29tcGxldGlvbkFuZENhbmNlbEhh
bmRsZXJzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiAmY29t
cGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLT52YWx1ZS5maXJzdDsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVTb3VwOjpyZW1vdmVDYW5jZWxBbmRDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBp
ZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2NvbXBs
ZXRpb25BbmRDYW5jZWxIYW5kbGVycy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lvbl9wcmVm
ZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5n
ZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0
ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOworfQorCit2
b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwg
dWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNz
ID0gYWRvcHRHUmVmKHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkp
OworICAgIGF1dG8gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7
CisgICAgc291cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNz
aW9uX2dldF9hc3luY19jb250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3Vw
U2Vzc2lvbigpKSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJh
Y2ssIHRoaXMpOworCisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQo
KSksICJpZGVudGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CisKKyAgICBt
X2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgY29tcGxldGlvbkFu
ZENhbmNlbEhhbmRsZXJzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNl
bGxhYmxlKSkpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVp
bnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IGF1dG8gY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXIgPSBtX2NvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGNvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVyICE9IG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAg
IGdfY2FuY2VsbGFibGVfY2FuY2VsKGNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVyLT52YWx1ZS5z
ZWNvbmQuZ2V0KCkpOworICAgICAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5yZW1v
dmUoaWRlbnRpZmllcik7CisgICAgfQorfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3Vw
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTUwNTc1OTBjMmE0ZTM4MmI4ZWYxYmRmZDMwNWFhOWU5OGY5ZjUzMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVl
dWVTb3VwIGZpbmFsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5T
UmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworICAgIGNvbnN0IFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyKiBnZXRDb21wbGV0
aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNhbmNlbEFu
ZENvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOworCitwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB1c2lu
ZyBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RE5TQ29t
cGxldGlvbkhhbmRsZXIsIEdSZWZQdHI8R0NhbmNlbGxhYmxlPj47CisKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+IG1fY29tcGxldGlvbkFuZENhbmNl
bEhhbmRsZXJzOworCisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmlu
YWw7Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1
ZVNvdXA7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNj
NzQzYTE4Y2RmODM4MzY5MGZmOGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
U291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQ
KQotCi0jaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5l
dHdvcmtTZXNzaW9uLmgiCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRp
YWxseSB0cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZl
IHByb3h5IHNldHRpbmdzLgotc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1z
dGF0aWMgYm9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJl
c29sdmVQcm94eShjaGFyKiogdXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3Nz
aWJsZSBwcm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhl
IGxpc3QgaXMKLSAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNl
ciBwcmVmZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8g
cmVzb2x2aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJl
dHVybmVkIGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWlu
ZyB0byBjb25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVy
ZSB3ZSBhcmUgbm90IHRyeWluZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUg
d2hldGhlciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVy
aXMgJiYgc3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJl
c29sdmVQcm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0
LCBib29sKiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19w
cm94eV9yZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQ
dHIoKSkpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRl
dGVybWluaW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29s
dmVQcm94eSh1cmlzLmdldCgpKTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94
eSB8fCBpc1VzaW5nSHR0cHNQcm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZv
ckh0dHBVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2
b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihz
b3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNl
ckRhdGEpKTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJh
Y2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEp
Ci17Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0
LCAmaXNVc2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQot
Ci12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVm
UHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3
b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5v
dXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlf
cmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29t
LyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQ
cm94eSk7Ci0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCks
ICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1Vy
aUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENh
bGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1
ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVz
b2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2Ru
cyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3Jl
YXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRh
dGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJl
ZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmEx
NDA3YzBmMGJjY2YyMzcyMTIuLjJmZjFlNjlkZWE5ZjAxNWU0MzI2NzY3YWIyMTBkNzZlODNiODI4
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCkBAIC0xNjIsMTUgKzE2NiwyMiBAQCB2b2lk
IE5ldHdvcmtSVENQcm92aWRlcjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubgogICAgIE5ldHdvcmtSVENTb2NrZXQoZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCksICp0aGlzKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3Jl
YXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQog
ewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZl
cj4oW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJv
ciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byByZXNvbHZlciA9IE5ldHdvcmtSVENSZXNv
bHZlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNB
ZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQu
aGFzX3ZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5jZWxsZWQpCisgICAgICAgICAgICBpZiAocmVzdWx0LmVy
cm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6
UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkp
LCBpZGVudGlmaWVyKTsKKworICAgICAgICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3Vs
dC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJu
IFJUQ05ldHdvcms6OklQQWRkcmVzcyB7IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5B
ZGRyKCkgfSB9OworICAgICAgICB9KTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKGFk
ZHJlc3NlcyksIGlkZW50aWZpZXIpOwogICAgIH0pOwogICAgIHJlc29sdmVyLT5zdGFydChhZGRy
ZXNzKTsKICAgICBtX3Jlc29sdmVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShyZXNvbHZlcikp
OwpAQCAtMTgyLDYgKzE5MywzNCBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6c3RvcFJlc29s
dmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAgICAgIHJlc29sdmVyLT5zdG9wKCk7CiB9CiAK
KyNlbHNlCisKK3ZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRf
dCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7CisgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVy
cm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
IHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBXZWJDb3JlOjpETlNFcnJvcjo6
Q2FuY2VsbGVkKQorICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRl
bnRpZmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRv
IGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0byYgYWRk
cmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7IHJ0Yzo6
SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICB9KTsKKworICAg
ICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNv
bHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3NlcyksIGlkZW50aWZpZXIpOworICAgIH07
CisKKyAgICBXZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OnN0b3BS
ZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZl
RE5TKGlkZW50aWZpZXIpOworfQorCisjZW5kaWYKKwogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6
OmNsb3NlTGlzdGVuaW5nU29ja2V0cyhGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFtX2lzTGlzdGVuaW5nU29ja2V0QXV0aG9yaXplZCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHAKaW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3MzExZjllNWNiMTZjM2ZmMDE2
ZS4uMWJmYWZhNDZiNzIwYzNjMjIxM2E3MTFjYzdiZGM2NmQxYWI3NzE2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwCkBAIC0zMiw2OCArMzIsMzQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUg
dHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQorLy8gRklY
TUU6IFVzZSB0aGUgZnVuY3Rpb24gYWZ0ZXIgcmVtb3ZpbmcgdGhlIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLgorI2lmICFQTEFURk9STShDT0NPQSkKK3N0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRD
UmVzb2x2ZXI+IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKLQotICAgIGlmIChlcnJvci0+
ZG9tYWluKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQg
aW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQVNTRVJUKGluZm8pOwotICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nh
c3Q8TmV0d29ya1JUQ1Jlc29sdmVyKj4oaW5mbyk7Ci0KLSAgICBCb29sZWFuIHJlc3VsdDsKLSAg
ICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRk
cmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKLQotICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJl
c3Nlcyk7Ci0gICAgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOwotICAg
IGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKLQotICAgIGZvciAoc2l6
ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewotICAgICAgICBDRkRhdGFS
ZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJl
c3NlcywgaW5kZXgpOwotICAgICAgICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKLSAgICAg
ICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJ
UEFkZHJlc3MoYWRkcmVzcy0+c2luX2FkZHIpKSk7Ci0gICAgfQotICAgIHJlc29sdmVyLT5jb21w
bGV0ZWQoYWRkcmVzc2VzKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENS
ZXNvbHZlcj4obmV3IE5ldHdvcmtSVENSZXNvbHZlcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkpOwogfQorI2VuZGlmCiAKLU5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29y
a1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAg
OiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorTmV0d29y
a1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKIH0KIAogTmV0d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29y
a1JUQ1Jlc29sdmVyKCkKIHsKLSAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0
LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0g
ICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAg
aWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIp
KQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6VW5rbm93
bikpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpE
TlNFcnJvcjo6VW5rbm93bikpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQo
Y29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3Jl
YXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygp
LmdldCgpKSk7Ci0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyIH07Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5n
ZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVu
TG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1
bHRNb2RlKTsKLSAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24o
bV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBXZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJlc3MsIG1f
aWRlbnRpZmllciwgbV9jb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Jl
c29sdmVyOjpzdG9wKCkKIHsKLSAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3Qu
Z2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKLX0K
LQotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0
d29yazo6SVBBZGRyZXNzPiYgYWRkcmVzc2VzKQotewotICAgIGlmIChhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CisgICAgV2ViQ29yZTo6c3RvcFJlc29sdmVETlMobV9p
ZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCmlu
ZGV4IDFiY2Y3MzZlNzY3YTY3MDRiNWNlOTdjZGE4YzcyM2JkZTM1ZTcyNzguLjM4ZTVmNzYyNzJj
NTgwMmJjYjAzZWFiNzM2NDE4MDA2NDk5NjUzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCkBAIC0yOCw3
ICsyOCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIK
LSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4K
ICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApAQCAtMzYsMjIgKzM2LDE3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgewogcHVibGljOgotICAgIGVudW0gY2xhc3MgRXJyb3Ig
eyBVbmtub3duLCBDYW5jZWxsZWQgfTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtSVENSZXNvbHZlcj4gY3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0Nv
bXBsZXRpb25IYW5kbGVyJiYpOwogCi0gICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVj
dGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRk
cmVzcz4+LCBFcnJvcj47Ci0gICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47CisgICAgTmV0d29ya1JUQ1Jl
c29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVy
JiYpOworICAgIHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwogCi0gICAgZXhwbGljaXQg
TmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIH5OZXR3b3JrUlRD
UmVzb2x2ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9pZCBzdGFydChjb25zdCBTdHJp
bmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgpOwotCi0gICAgdm9pZCBjb21wbGV0ZWQoY29u
c3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKLQotcHJpdmF0ZToKLSAgICBDb21w
bGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RS
ZWY+IG1faG9zdDsKK3Byb3RlY3RlZDoKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAg
V2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxZmRiNTU1Mjc5ZWJlMGIyMjE3MWU1MmVjMDA3MTY1OThiMTU5OTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKworI2lm
IFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwg
Q0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lk
ICppbmZvKQoreworICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7CisKKyAg
ICBBU1NFUlQoaW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYSo+KGluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAg
ICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBw
cm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCisgICAgICAgIHJlc29sdmVyLT5jb21wbGV0ZWQobWFr
ZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRB
ZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1
bHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNv
dW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8V2Vi
Q29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY291bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNv
dW50OyArK2luZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1
dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+
KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBw
ZW5kKFdlYkNvcmU6OklQQWRkcmVzcygqYWRkcmVzcykpOworICAgIH0KKyAgICByZXNvbHZlci0+
Y29tcGxldGVkKHsgYWRkcmVzc2VzIH0pOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JU
Q1Jlc29sdmVyPiBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVy
LCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPihuZXcgTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
KTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNvbHZlckNvY29h
KHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29h
Ojp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2NoZWR1bGVGcm9t
UnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBu
dWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3Qg
U3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0
aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwg
cmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcCht
X2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0
LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RvcCgp
Cit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJ
bmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisK
K3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OmNvbXBsZXRlZChXZWJDb3JlOjpETlNBZGRy
ZXNzZXNPckVycm9yJiYgYWRkcmVzc2VzT3JFcnJvcikKK3sKKyAgICBpZiAoYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoYWRkcmVzc2VzT3JFcnJvcikpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lODQxOThkMTZhMDEyZjQxYjNhMWFjN2U3YTVlYWFlM2IzY2Ri
NDBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTmV0d29y
a1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mgd2hlbiB3ZSBjb21w
bGV0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorY2xh
c3MgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya1JUQ1Jlc29s
dmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB+
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKSBmaW5hbDsKKworICAgIHZvaWQgc3RhcnQoY29uc3Qg
U3RyaW5nJiBhZGRyZXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworICAgIHZv
aWQgY29tcGxldGVkKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJik7CisKK3ByaXZhdGU6
CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYThhOTE4ZmIyY2FjODRlNWZhNGI1
ZTJkNzI5ZjE2YzdiNmRhMWJlZC4uOGFjNTZhMGQxMDVlYTkwN2MyM2RiMmY3OGRkMzFlMzVhOGI2
YzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC05MTUsNiArOTE1LDcgQEAKIAkJNDEwNDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJU
Q05ldHdvcmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0
MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAgLyogUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8q
IFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdv
cmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNw
cCAqLzsgfTsKKwkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAg
Ki87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFF
MzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFE
RTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyog
TmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAv
KiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0
b3IuY3BwICovOyB9OwpAQCAtMzI4Nyw2ICszMjg4LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAw
RjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZE
M0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQw
MDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZC
MDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02MjM2LDYgKzYyMzksOCBAQAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIx
MUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcx
RjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1
NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovLAorCQkJCTQxMTJC
NTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJ
CQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgg
Ki8sCiAJCQkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3Bw
ICovLAogCQkJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0Lmgg
Ki8sCiAJCQkJNDEzMDc1OUQxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVz
c2FnZXMuaW4gKi8sCkBAIC0xMDYyMSw2ICsxMDYyNiw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUy
MjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUgLyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3
QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29j
a2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJG
M0YwMEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYzE5
NzBjZThkNzQxMWYwMGZjMjMyZTUxOGNlOWFkMzZmYmE5YTU3Li4wZTQ4OGJjYWM0ODcyYTY3MTVi
N2IyYmNkMWQ5YzY0MWQ4NWE2Y2U1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDItMTkgIEFsZWphbmRybyBH
LiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVz
b2x2ZXIgcG9ydCBhZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgbmV3IHVuaXQgdGVzdHMgZm9yIGhlIHJlc29sdmUgYW5kIHN0b3BS
ZXNvbHZlIGZ1bmN0aW9ucy4gV2UgbmVlZCB0byBjb21waWxlIHRoZW0gZm9yIHRoZQorICAgICAg
ICBvdGhlciBwbGF0Zm9ybXMgd2hlbiB0aGUgQVBJcyBhcmUgc3VwcG9ydGVkLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcDoKKwogMjAxOC0wMy0wMSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEFQSSB0ZXN0IHRvIHZhbGlkYXRlIHNl
dHRpbmcgb2Ygc2VydmljZSB3b3JrZXIgYW5kIGNhY2hlIHN0b3JhZ2UgZGlyZWN0b3JpZXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDRhZWY2OTUzY2QxNjE0YmY2Y2Yw
M2NlMjI0OGFmYjNjNmQyZGU1ZjguLjYyMDJmNDZiYWYwYjMzNzg1Yzg1Y2FkNzJjNmIyODMzYmU4
ODdkNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtODcsNiArODcs
NyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJD
b3JlL0NTU1BhcnNlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3Jl
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XZWJDb3JlL0ROUy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3Jl
L0ZpbGVNb25pdG9yLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUv
RmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0dy
aWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9ETlMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGNiN2U1OTMwMzJmMDgzYWNlNDllMmVhMzZmYTJkYmY1ZTVkZDhkYQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3Bw
CkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5M
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIK
KworI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworYm9vbCBkb25lID0gZmFsc2U7CisKK1RFU1QoRE5TVGVzdCwgY2FuY2VsUmVzb2x2ZURO
UykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0
IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRf
dCBpZGVudGlmaWVyID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25I
YW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQu
aGFzX3ZhbHVlKCkpOworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJD
b3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKTsKKworICAgICAgICByZXR1cm47CisgICAgfTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICByZXNvbHZlRE5TKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc3RvcFJlc29sdmVETlMoaWRlbnRpZmll
cik7CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChETlNUZXN0LCBjYW50UmVzb2x2
ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNv
bnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygibm90YXZhbGlkZG9tYWluLm5vdGF2YWxpZGRv
bWFpbiIpOworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAxOworCisgICAgRE5TQ29tcGxldGlv
bkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIgPSBbXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVy
cm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisKKyAgICAgICAg
QVNTRVJUX0ZBTFNFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHJl
c3VsdC5lcnJvcigpID09IFdlYkNvcmU6OkROU0Vycm9yOjpDYW50UmVzb2x2ZSk7CisKKyAgICAg
ICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyho
b3N0bmFtZSwgaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFV0
aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoRE5TVGVzdCwgcmVzb2x2ZUROUykKK3sKKyAgICBS
dW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0
bmFtZSA9IFN0cmluZygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVy
ID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10o
V2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
IGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7
CisKKyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVz
b2x2ZUROUyhob3N0bmFtZSwgaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335088</attachid>
            <date>2018-03-06 06:12:54 -0800</date>
            <delta_ts>2018-03-06 06:26:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180306151244.patch</filename>
            <type>text/plain</type>
            <size>83010</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM0ZjI5MDk3OGQyMzE2
MmNkZWVmYjdlODYzNjZhMjNjYTQ2NjRjNC4uZDA3MTc3MzdkODgwYzg3MzNiOWM4ODZlODdkZGE3
NDIyMzM4ODdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyIGZvciBDT0NPQSBjb2RlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVDRjo6cmVzb2x2ZSk6IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmg6IEFk
ZCB0aGUgbmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cmVzb2x2ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oOiBO
ZXcgY2xhc3MgaW5oZXJpdGluZyBmcm9tIHRoZSBETlNSZXNvbHZlUXVldWUgY2xhc3MsIGFkZGlu
ZworICAgICAgICBhIEhhc01hcCB3aXRoIHRoZSBhY3RpdmUgb3BlcmF0aW9ucywgaXQgYWxsb3dz
IHN0b3BwaW5nIHRoZW0uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29s
dmVRdWV1ZVNvdXAuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU1NvdXAuY3BwLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjayk6IENhbGxlZCB3aGVuIHRoZSByZXN1bHQgYWRkcmVzcyBmcm9tIHRoZSBz
b3VwIHBsYXRmb3JtIGlzIHJlYWR5LAorICAgICAgICBzZW5kcyB0aGUgYWRkcmVzcyB0byB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291
cDo6cmVzb2x2ZSk6IExhdW5jaCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gd2l0aCB0aGUgc291cCBs
aWJyYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBwcm9jZXNzIHdpdGggYSBHQ2FuY2Vs
bGFibGUuCisKIDIwMTgtMDMtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBSZW1vdmUgdW51c2VkIHNjcm9sbGluZy1yZWxh
dGVkIGNvZGUgaW4gVGV4dHVyZU1hcHBlckxheWVyLCBDb29yZGluYXRlZEdyYXBoaWNzIHN0YWNr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDg0MTNmODc5YTMyNTQyM2U2MDBiYzJhZGM0NDVkN2EyYzZiODNmNTYuLjQz
YTVkOTkxNjM1ZWI0Y2EzZjJjY2M4MzRiN2FlMmMyZTY0OGM0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTgtMDItMDggIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5j
b20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgc3Bl
Y2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0ZSB0aGUgZ2VuZXJpYyBjb2RlIGluIHRoZSBiYXNl
IGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHBvcnQKKyAgICAgICAgYWdub3N0
aWMgYW5kIGRlcGVuZGVudCBvbiBETlMgQVBJIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnkgd2hp
Y2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRhaWxzLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBh
biBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRo
ZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVS
ZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBB
ZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2Vi
cnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBE
TlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBp
biB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZpZXIg
b2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50aWZp
ZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVz
b2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmlj
IGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBBZGQg
YSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAgICAg
ICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBBdm9p
ZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBjbGFz
c2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFtZSBy
ZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTog
TWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNv
bHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAg
ICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2RzIHRo
YXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1ldGhv
ZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2luZyBz
dXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3JtIGRp
cmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMy0wNiAg
TXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIEltcGxlbWVudCBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggZWU3YjQwNzIwZjBk
OGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJkN2E3MTM5OWRlZWZkYzky
NTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01
MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3Rv
cmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggM2U4
NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1MjBhYjBmY2UwZGY0ODMy
Zjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTQx
Myw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQogCi0gICAgcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggMjNhOTQwMzRlYTkzNDQzOTNmOTlkMDRhMTkyODJlYjFjODY1
NmQ1Yy4uNzg4Y2ZkYjQ0NjY4NTNmMmJmZjMzZGY2MjJhZGQ4MzIyOGM3MjRjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE3MDcsNiArMTcwNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAK
K3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg1NDliZTM0MTM2
NzJhMDk2ZWFlMjI3ZjlhNmRhZmM0NDNjNjEyY2IuLjViZTI1NWJjZTQyZjBlY2ExNDNiOGI3MzNk
MzJjMDIzNTU4OGVlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDgyLDcgKzQ4Miw3
IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKIHBsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCiAKLXBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogcGxhdGZv
cm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OGM4ZDFmODAzN2ZiODkwYjMzNGI3
ZTAwYTRkOTgwZGMyN2EzY2YwLi41M2VlYzJiMDI2M2FiMDJkZTAyYjAwYzcwNWJhNzQ1ZmRlZTk1
NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMjU1LDYgKzIyNTUsNyBAQAogCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1
QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3RUU2ODQ2RjEyRDI2RTM4MDBF
NzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNv
bHZlUXVldWVDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAv
KiBKU0ZldGNoQm9keS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0Y0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggKi87IH07CiAJ
CTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Y0Qzk2RDkxQUQ0NDgz
NTAwMzY1QTUxIC8qIEpTUmVhZGFibGVTdHJlYW1TaW5rLmggKi87IH07CkBAIC05NjA0LDYgKzk2
MDUsNyBAQAogCQk3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0VFNjg0NUMxMkQyNkUzODAwRkY5NDE1IC8qIERO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERO
U1Jlc29sdmVRdWV1ZUNGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4
NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hCb2R5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUxIC8qIEpT
UmVhZGFibGVTdHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUmVhZGFibGVTdHJlYW1TaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEyMTI1LDggKzEyMTI3LDkgQEAKIAkJQjJFNEVDOTUwRDAwQzIyQjAwNDMyNjQzIC8qIFNW
R1pvb21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHWm9vbUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRTRFQzk2MEQwMEMyMkIwMDQz
MjY0MyAvKiBTVkdab29tRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdab29t
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkVEOTc3MDBCMUY1NUNF
MDAyNTdEMEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMkYzNEZFODBFODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RTBBQjc1
QTZFMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RjBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNTAwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlZEFuZ2xl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzIxLDYgKzE4NzI0LDcgQEAK
IAkJCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCAqLywK
IAkJCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuY3BwICovLAog
CQkJCUU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oICovLAorCQkJ
CTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovLAogCQkJCUIyRjM0RkU1MEU4
MkY4MTQwMEY2MjdDRCAvKiBETlMuaCAqLywKIAkJCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUg
LyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLywKIAkJCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAg
LyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8sCkBAIC0yMzQ0Nyw3ICsyMzQ1MSw4IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQk3RUU2ODQ0RTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCAqLywKIAkJCQk1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNh
dGVJbmZvLmggKi8sCi0JCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNw
cCAqLywKKwkJCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovLAorCQkJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVl
dWVDRk5ldC5oICovLAogCQkJCTdFRTY4NDUzMTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovLAogCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCkBAIC0yNzMxMSw2ICsyNzMxNiw3IEBACiAJ
CQkJRkQzMTYwOTExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NDczMEQ3NzEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkYzNEZFNjBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZEOSAvKiBE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNCQjU5RjQxNDU3QTQwRDAwQUM1NkZFIC8q
IERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGM0QwOTc2NTc2
NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKaW5kZXggNGE4MmViMDk5ZjVmMjcyMGNiZTNkMjVkMzY5MTAzNWI1
NmMwYmNmOC4uNDgwNjBiODUzYmVjYzlkYmIxOTNlYzZiYzg5MjhhNzRjMzg5YWU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCkBAIC0yMSw3ICsyMSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAotICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JD
dXJsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAu
dHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CmluZGV4IDhlNDdk
NjJhMzg2MzEyNzIyNmVlZDk0NzFiM2QzMjg2YzFiMjk3OTUuLmQ2NGZjZmJlYTI4MTQ3ZGFkZjQz
MGIyZmZiNGMwZmVhNjBiOTVkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKQEAgLTI3LDcgKzI3LDcgQEAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9D
cmVkZW50aWFsU3RvcmFnZVNvdXAuY3BwCi1wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5j
cHAKK3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlT
ZXJ2ZXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxMTIyZGIzZDg2N2ViZTZkYzA3MjkyMTIwZmVlOTc2ZTIzODI1MzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TLmgiCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhv
c3RuYW1lKTsKK30KKwordm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZUROUyh1aW50NjRfdCBpZGVudGlm
aWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuc3RvcFJl
c29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
Uy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAzYzUzNzE3NWU2MmMuLmYwN2Fj
YjUxZDY1ZGIwMGMxNTBkZjQwMTY1MGQ2MTg2ZWIyNWY5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFnbWEgb25jZQorCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2luY2x1ZGUg
PG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDx3aW5zb2NrMi5o
PgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7CitwdWJsaWM6CisgICAgSVBB
ZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisgICAg
ICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IGluX2Fk
ZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2luX2FkZHI7IH07CisKK3ByaXZh
dGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKK2VudW0gY2xhc3Mg
RE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2VsbGVkIH07CisKK3VzaW5nIERO
U0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNpbmcgRE5TQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5TQWRkcmVzc2VzT3JFcnJvciYm
KT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwog
Ci0jZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RE5TUmVzb2x2ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAppbmRleCBmZTNkOGM5MjUzYzA5MjJkYzBkZjU1ODU1M2Q2MjVmYTc2
NGVlZDE2Li5iNTY5MGFlNmQwODA3MmM1ZTgwNzgxM2Q3ZTczMGViOTc0Njk3OTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3Bw
CkBAIC0yNyw2ICsyNywxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
U291cC5oIgorI2VsaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5o
IgorI2VsaWYgVVNFKENGKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZW5k
aWYKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw3ICs2MCw3IEBAIHN0YXRp
YyBjb25zdCBTZWNvbmRzIHJlc29sdmluZ1JldHJ5RGVsYXkgeyAxMDBfbXMgfTsKIAogRE5TUmVz
b2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT4gcXVldWU7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtPiBxdWV1ZTsKIAogICAgIHJldHVybiBxdWV1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVz
b2x2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVR
dWV1ZS5oCmluZGV4IDA3YjhmZGNiNjJmZmZlNTY0NWY5MDA3ZTJmNDE4MDUwZTlmODExYjguLmY3
N2I1NDBlYzYwMWIwNWM4MmY5YmIyMWE4ODdkMzViZTg2ODEwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcs
NyBAQAogI2lmbmRlZiBETlNSZXNvbHZlUXVldWVfaAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVf
aAogCisjaW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9t
aWM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDIyICs0MCwyNyBAQCBjbGFzcyBE
TlNSZXNvbHZlUXVldWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVl
dWU+OwogCiBwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5T
UmVzb2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYg
c2luZ2xldG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhv
c3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpID0gMDsK
ICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVu
dFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAg
ICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAg
ICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsK
LSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNV
c2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJ
c1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25z
dCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3Rp
bWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlND
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFj
ZDJkN2M4NmU4ZTM3MjAyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE5TLmgiCi0j
aW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRl
ICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotI2lmIFBMQVRG
T1JNKElPUykKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotI2lm
IFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0YuaCIKLSNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKLSAgICBpZiAoIXByb3h5U2V0dGluZ3MpIHsKLSAgICAg
ICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0
dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29t
LyIpLmNyZWF0ZUNGVVJMKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5
QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQo
KSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
c1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZV
UkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKLQotICAgIENGSW5kZXggaHR0cFByb3h5
Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFByb3h5QXJyYXkuZ2V0KCkpOwotICAgIENGSW5k
ZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQo
KSk7Ci0gICAgaWYgKGh0dHBQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlU
eXBlTm9uZSkpCi0gICAgICAgIGh0dHBQcm94eUNvdW50ID0gMDsKLSAgICBpZiAoaHR0cHNQcm94
eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxD
RkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5Lmdl
dCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBo
dHRwc1Byb3h5Q291bnQgPSAwOwotCi0gICAgbV9pc1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3Vu
dCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENG
SG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZv
aWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVz
dENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBzaW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5
IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVk
IGJ5IG5vdy4KLSAgICBDRlJlbGVhc2UodGhlSG9zdCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1
ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFk
b3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSkpOwotICAgIGlmICghaG9zdCkgewotICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENGSG9zdENsaWVudENvbnRleHQgY29u
dGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OwotICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9z
dC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxs
YmFjaygpLgotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3Qs
IGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Ci0jaWYgIVBMQVRGT1JNKFdJTikKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsK
LSNlbHNlCi0gICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGgg
Q0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4K
LSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3Ao
KSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNlbmRpZgotICAgIENGSG9zdFN0YXJ0SW5mb1Jl
c29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFkZHJlc3NlcywgMCk7Ci19Ci0KLXZvaWQgcHJl
ZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBkYWVlNjg5NDIyMDM3ZTc3ODRkZDg3YTc5
Njg3NjQ5ZjVmZDZhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJraXQu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCIKKworI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVk
ZSAiTG9hZGVyUnVuTG9vcENGLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgfHwgUExB
VEZPUk0oSU9TKQorI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlz
VXNpbmdQcm94eSgpCit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0
aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7CisgICAg
aWYgKCFwcm94eVNldHRpbmdzKSB7CisgICAgICAgIG1faXNVc2luZ1Byb3h5ID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVS
TCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZV
UkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJM
U3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworCisgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdv
cmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgp
KSk7CisKKyAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBQ
cm94eUFycmF5LmdldCgpKTsKKyAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlH
ZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOworICAgIGlmIChodHRwUHJveHlDb3VudCA9
PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgpLCAwKSks
IGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQorICAgICAgICBodHRwUHJveHlD
b3VudCA9IDA7CisgICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBr
Q0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsKKworICAgIG1f
aXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50OworfQorCitz
dGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5
cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwg
c2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUg
aGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cuCisgICAgQ0ZSZWxlYXNlKHRoZUhv
c3QpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5h
bWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIGlmICghaG9zdCkg
eworICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9
OworICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0
IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgorICAgIEJvb2xlYW4gcmVz
dWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4
dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisjaWYgIVBMQVRGT1JNKFdJ
TikKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdl
dE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyNlbHNlCisgICAgLy8gT24gV2luZG93
cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVy
ZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhS
dW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKKyNlbmRpZgorICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NG
SG9zdEFkZHJlc3NlcywgMCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnJlc29s
dmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgdWludDY0X3QgLyogaWRlbnRpZmllciAq
LywgRE5TQ29tcGxldGlvbkhhbmRsZXImJiAvKiBjb21wbGV0aW9uSGFuZGxlciAqLykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9w
UmVzb2x2ZSh1aW50NjRfdCAvKiBpZGVudGlmaWVyICovKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzI1Y2E3MWNiNzkwZDI5
ZTIyNDg2Y2I0YWYyYWU2OGRmNzgyMDc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5oCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGTmV0IGZpbmFsIDogcHVibGljIEROU1Jlc29sdmVR
dWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7Cisg
ICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZp
ZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUo
dWludDY0X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0
ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNv
bHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxh
dGZvcm0gPSBETlNSZXNvbHZlUXVldWVDRk5ldDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgxZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYgVVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1
ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBo
b3N0bmFtZSAqLykKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIHByZWZldGNo
RE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MjMxYTc3OWVhMzI2OTU2Mzk0YjU2MThlZGE1ZGFmMTAyMGViZTUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIKKworI2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29s
dmVRdWV1ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3Qg
U3RyaW5nJiAvKiBob3N0bmFtZSAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFt
ZSAqLywgdWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImJiAv
KiBjb21wbGV0aW9uSGFuZGxlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IC8qIGlkZW50aWZp
ZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVl
dWVDdXJsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2
ZVF1ZXVlQ3VybC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Y2E3YzEyZmM4ZGM5NjE5NTIyNjk1Njc2YWI5MGQ0
ODIwMzg3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jl
c29sdmVRdWV1ZUN1cmwgZmluYWwgOiBwdWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoK
KyAgICBETlNSZXNvbHZlUXVldWVDdXJsKCkgPSBkZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShj
b25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZp
ZXIpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSBm
aW5hbDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcm
KSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2
ZVF1ZXVlQ3VybDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNWEw
ODQ3ODQ4YjljMzUwMjQwNDk3N2JkYzNhYTIyNDlhODcxZmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5j
cHAKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
U291cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Np
b24uaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gSW5p
dGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhh
dmUgcHJveHkgc2V0dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsK
K3N0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKKworc3RhdGljIGJvb2wgZGlk
UmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBv
c3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgbGlzdCBpcworICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1
c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8KKyAgICAv
LyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMg
cmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisgICAgLy8gaWYgd2UncmUgdHJ5
aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBo
ZXJlIHdlIGFyZSBub3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lk
ZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAgICByZXR1cm4gdXJpcyAmJiAq
dXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30KKworc3RhdGljIHZvaWQgZGlk
UmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKK3sKKyAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhn
X3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3Ig
ZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVz
b2x2ZVByb3h5KHVyaXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFBy
b3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVk
Rm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVS
KHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1
c2VyRGF0YSkpOworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxs
YmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0
YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1
bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Cit9
CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAg
ICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAgICBnX29iamVjdF9nZXQoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNv
dXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNv
bHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJlc29sdmVyKTsKKworICAgIGdf
cHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1w
bGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lz
VXNpbmdQcm94eSk7CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIu
Z2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JI
dHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQorCitzdGF0aWMgdm9pZCByZXNv
bHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQoreworICAgIEROU1Jlc29s
dmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cit9CisKK3N0YXRp
YyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFkZHJlc3Ms
IGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgYXV0
byogcmVzb2x2ZVF1ZXVlID0gc3RhdGljX2Nhc3Q8RE5TUmVzb2x2ZVF1ZXVlU291cCo+KGRhdGEp
OworCisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IEdQT0lOVEVSX1RPX1VJTlQoZ19vYmplY3Rf
Z2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcyksICJpZGVudGlmaWVyIikpOworCisgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IHJlc29sdmVRdWV1ZS0+Z2V0Q29tcGxldGlvbkhhbmRsZXIoaWRl
bnRpZmllcik7CisKKyAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKSB7CisgICAgICAgIEROU0Vycm9y
IGVycm9yID0gRE5TRXJyb3I6OlVua25vd247CisKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsK
KyAgICAgICAgY2FzZSBTT1VQX1NUQVRVU19DQU5UX1JFU09MVkU6CisgICAgICAgICAgICBlcnJv
ciA9IEROU0Vycm9yOjpDYW50UmVzb2x2ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFNPVVBfU1RBVFVTX0NBTkNFTExFRDoKKyAgICAgICAgICAgIGVycm9yID0gRE5TRXJyb3I6
OkNhbmNlbGxlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNPVVBfU1RBVFVT
X09LOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH07CisKKyAgICAgICAgKCpjb21wbGV0aW9uSGFuZGxlcikobWFrZVVuZXhwZWN0
ZWQoZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc291cF9hZGRy
ZXNzX2lzX3Jlc29sdmVkKGFkZHJlc3MpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8
V2ViQ29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoMSk7CisgICAgaW50IGxlbjsKKyAgICBhdXRvKiBpcEFkZHJlc3MgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KHNvdXBfYWRkcmVzc19nZXRf
c29ja2FkZHIoYWRkcmVzcywgJmxlbikpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplb2YoKmlwQWRkcmVzcykgLyBsZW47IGkrKykKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tl
ZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBBZGRyZXNzW2ldKSk7CisKKyAgICAoKmNvbXBs
ZXRpb25IYW5kbGVyKSh7IGFkZHJlc3NlcyB9KTsKKworICAgIHJlc29sdmVRdWV1ZS0+cmVtb3Zl
Q2FuY2VsQW5kQ29tcGxldGlvbkhhbmRsZXIoaWRlbnRpZmllcik7Cit9CisKK2NvbnN0IFdlYkNv
cmU6OkROU0NvbXBsZXRpb25IYW5kbGVyKiBETlNSZXNvbHZlUXVldWVTb3VwOjpnZXRDb21wbGV0
aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBhdXRvIGNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycyA9IG1fY29tcGxl
dGlvbkFuZENhbmNlbEhhbmRsZXJzLmZpbmQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoY29tcGxl
dGlvbkFuZENhbmNlbEhhbmRsZXJzID09IG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmVu
ZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiAmY29tcGxldGlvbkFu
ZENhbmNlbEhhbmRsZXJzLT52YWx1ZS5maXJzdDsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpyZW1vdmVDYW5jZWxBbmRDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2NvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0
ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRh
KCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOworfQorCit2b2lkIEROU1Jl
c29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3Qg
aWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRH
UmVmKHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1
dG8gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291
cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9h
c3luY19jb250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigp
KSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssIHRoaXMp
OworCisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVu
dGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CisKKyAgICBtX2NvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgY29tcGxldGlvbkFuZENhbmNlbEhh
bmRsZXJzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkp
OworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gY29t
cGxldGlvbkFuZENhbmNlbEhhbmRsZXIgPSBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5m
aW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVyICE9
IG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAgIGdfY2FuY2Vs
bGFibGVfY2FuY2VsKGNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVyLT52YWx1ZS5zZWNvbmQuZ2V0
KCkpOworICAgICAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5yZW1vdmUoaWRlbnRp
Zmllcik7CisgICAgfQorfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTUwNTc1OTBjMmE0ZTM4MmI4ZWYxYmRmZDMwNWFhOWU5OGY5ZjUzMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZl
UXVldWVTb3VwLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgi
CisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVTb3VwIGZp
bmFsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1
ZXVlU291cCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5hbDsKKworICAg
IGNvbnN0IFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyKiBnZXRDb21wbGV0aW9uSGFuZGxl
cih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNhbmNlbEFuZENvbXBsZXRp
b25IYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1
cGRhdGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB1c2luZyBjb21wbGV0
aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RE5TQ29tcGxldGlvbkhh
bmRsZXIsIEdSZWZQdHI8R0NhbmNlbGxhYmxlPj47CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBj
b21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+IG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJz
OworCisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9Owor
Cit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNT
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2Rm
ODM4MzY5MGZmOGY2Mzk1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMu
aCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5j
bHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNz
aW9uLmgiCi0jaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVl
IHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNl
dHRpbmdzLgotc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9v
bCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7Ci0KLXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94
eShjaGFyKiogdXJpcykKLXsKLSAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94
aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMK
LSAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJz
IG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5n
IGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGlu
IG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAotICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25u
ZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUg
bm90IHRyeWluZwotICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBh
IHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCi0gICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3Ry
Y21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94
eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBp
c1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwotICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNv
bHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwot
ICAgIGlmIChlcnJvcikgewotICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWluaW5n
IHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1
cmlzLmdldCgpKTsKLSAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1Vz
aW5nSHR0cHNQcm94eTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlD
YWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2Vy
RGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCBy
ZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsK
LX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVj
dCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAg
ZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2lu
Z0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOwotfQotCi12b2lkIERO
U1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94
eVJlc29sdmVyPiByZXNvbHZlcjsKLSAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lv
bigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwg
bnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc29sdmVyKTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJf
bG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxw
dHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0g
ICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczov
L2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNr
LCAmbV9pc1VzaW5nUHJveHkpOwotfQotCi1zdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNv
dXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xl
dG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotCi0gICAgc291cF9zZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5l
dHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVs
bHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEROU1Jl
c29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhvc3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJj
Y2YyMzcyMTIuLjJmZjFlNjlkZWE5ZjAxNWU0MzI2NzY3YWIyMTBkNzZlODNiODI4YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpU
aHJlYWQ+IGNyZWF0ZVRocmVhZCgpCkBAIC0xNjIsMTUgKzE2NiwyMiBAQCB2b2lkIE5ldHdvcmtS
VENQcm92aWRlcjo6ZGlkUmVjZWl2ZU5ldHdvcmtSVENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubgogICAgIE5ldHdvcmtSVENTb2NrZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCks
ICp0aGlzKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAorI2lm
IFBMQVRGT1JNKENPQ09BKQorCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2
ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1
dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMs
IGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZlcjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgYXV0byByZXNvbHZlciA9IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3Jl
YXRlKGlkZW50aWZpZXIsIFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNP
ckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVl
KCkpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2
ZXI6OkVycm9yOjpDYW5jZWxsZWQpCisgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0g
V2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCkKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRB
ZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Oldl
YlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlm
aWVyKTsKKworICAgICAgICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgp
LmdldCgpLCBbXSAoYXV0byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdv
cms6OklQQWRkcmVzcyB7IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9
OworICAgICAgICB9KTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3Nlcyks
IGlkZW50aWZpZXIpOwogICAgIH0pOwogICAgIHJlc29sdmVyLT5zdGFydChhZGRyZXNzKTsKICAg
ICBtX3Jlc29sdmVycy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShyZXNvbHZlcikpOwpAQCAtMTgy
LDYgKzE5MywzNCBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6c3RvcFJlc29sdmVyKHVpbnQ2
NF90IGlkZW50aWZpZXIpCiAgICAgICAgIHJlc29sdmVyLT5zdG9wKCk7CiB9CiAKKyNlbHNlCisK
K3ZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVk
KQorICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYlJUQ1Jlc29sdmVyOjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGFkZHJlc3Nl
cyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0byYgYWRkcmVzcykgewor
ICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7IHJ0Yzo6SVBBZGRyZXNz
IHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICB9KTsKKworICAgICAgICBtX2Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0
UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3NlcyksIGlkZW50aWZpZXIpOworICAgIH07CisKKyAgICBX
ZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJlc3MsIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OnN0b3BSZXNvbHZlcih1
aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKGlkZW50
aWZpZXIpOworfQorCisjZW5kaWYKKwogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNsb3NlTGlz
dGVuaW5nU29ja2V0cyhGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX2lzTGlzdGVuaW5nU29ja2V0QXV0aG9yaXplZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5j
cHAKaW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3MzExZjllNWNiMTZjM2ZmMDE2ZS4uMWJmYWZh
NDZiNzIwYzNjMjIxM2E3MTFjYzdiZGM2NmQxYWI3NzE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
CkBAIC0zMiw2OCArMzIsMzQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lk
IHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8s
IGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQorLy8gRklYTUU6IFVzZSB0
aGUgZnVuY3Rpb24gYWZ0ZXIgcmVtb3ZpbmcgdGhlIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLgor
I2lmICFQTEFURk9STShDT0NPQSkKK3N0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+
IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6
OkROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJU
X1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsKLQotICAgIGlmIChlcnJvci0+ZG9tYWluKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBu
b3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUKGluZm8pOwotICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29y
a1JUQ1Jlc29sdmVyKj4oaW5mbyk7Ci0KLSAgICBCb29sZWFuIHJlc3VsdDsKLSAgICBDRkFycmF5
UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyho
b3N0UmVmLCAmcmVzdWx0KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLQot
ICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7Ci0g
ICAgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4gYWRkcmVzc2VzOwotICAgIGFkZHJlc3Nl
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewotICAgICAgICBDRkRhdGFSZWYgZGF0YSA9
IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5k
ZXgpOwotICAgICAgICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1
Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKLSAgICAgICAgYWRkcmVz
c2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3JrOjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3Mo
YWRkcmVzcy0+c2luX2FkZHIpKSk7Ci0gICAgfQotICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRk
cmVzc2VzKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4o
bmV3IE5ldHdvcmtSVENSZXNvbHZlcihpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOwogfQorI2VuZGlmCiAKLU5ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29s
dmVyKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgOiBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorTmV0d29ya1JUQ1Jlc29s
dmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5T
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQorICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkKIHsKIH0KIAogTmV0d29ya1JUQ1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29s
dmVyKCkKIHsKLSAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBD
RlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQ0ZIb3N0
U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6VW5rbm93bikpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6
VW5rbm93bikpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQoY29uc3QgU3Ry
aW5nJiBhZGRyZXNzKQogewotICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5h
bWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7
Ci0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyIH07Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVz
b2x2ZWROYW1lLCAmY29udGV4dCk7Ci0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hv
c3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsK
LSAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0Lmdl
dCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKKyAgICBXZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJlc3MsIG1faWRlbnRpZmll
ciwgbV9jb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpz
dG9wKCkKIHsKLSAgICBDRkhvc3RDYW5jZWxJbmZvUmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENG
SG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2VzKTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpDYW5jZWxsZWQpKTsKLX0KLQotdm9pZCBO
ZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBB
ZGRyZXNzPiYgYWRkcmVzc2VzKQotewotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyBhZGRyZXNzZXMgfSk7CisgICAgV2ViQ29yZTo6c3RvcFJlc29sdmVETlMobV9pZGVudGlmaWVy
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCmluZGV4IDFiY2Y3
MzZlNzY3YTY3MDRiNWNlOTdjZGE4YzcyM2JkZTM1ZTcyNzguLjM4ZTVmNzYyNzJjNTgwMmJjYjAz
ZWFiNzM2NDE4MDA2NDk5NjUzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oCkBAIC0yOCw3ICsyOCw3IEBA
CiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKLSNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ETlMuaD4KICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtMzYsMjIgKzM2LDE3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3
b3JrUlRDUmVzb2x2ZXIgewogcHVibGljOgotICAgIGVudW0gY2xhc3MgRXJyb3IgeyBVbmtub3du
LCBDYW5jZWxsZWQgfTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNv
bHZlcj4gY3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25I
YW5kbGVyJiYpOwogCi0gICAgdXNpbmcgQWRkcmVzc2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4+LCBF
cnJvcj47Ci0gICAgdXNpbmcgQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47CisgICAgTmV0d29ya1JUQ1Jlc29sdmVyKHVp
bnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyJiYpOworICAg
IHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigpOwogCi0gICAgZXhwbGljaXQgTmV0d29ya1JU
Q1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXIo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJl
c3MpOwotICAgIHZvaWQgc3RvcCgpOwotCi0gICAgdm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9y
PFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKLQotcHJpdmF0ZToKLSAgICBDb21wbGV0aW9uSGFu
ZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9z
dDsKK3Byb3RlY3RlZDoKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6
RE5TQ29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcx
ZmRiNTU1Mjc5ZWJlMGIyMjE3MWU1MmVjMDA3MTY1OThiMTU5OTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJX
RUJSVEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5m
b1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQor
eworICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7CisKKyAgICBBU1NFUlQo
aW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSo+KGluZm8pOworCisgICAgaWYgKGVycm9yLT5kb21haW4pIHsKKyAgICAgICAgLy8g
RklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBp
biB0aGUgY2FsbGJhY2suCisgICAgICAgIHJlc29sdmVyLT5jb21wbGV0ZWQobWFrZVVuZXhwZWN0
ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENGQXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMg
PSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNzaW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZB
cnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBB
ZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
Y291bnQpOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2lu
ZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFs
dWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBpbmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJl
c3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdl
dEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNv
cmU6OklQQWRkcmVzcygqYWRkcmVzcykpOworICAgIH0KKyAgICByZXNvbHZlci0+Y29tcGxldGVk
KHsgYWRkcmVzc2VzIH0pOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVy
PiBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPihuZXcgTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKK30KKwor
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdvcmtSVENSZXNvbHZlckNvY29hKHVpbnQ2NF90
IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcCht
X2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsK
K30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAg
Q0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWRO
YW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0
KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBC
b29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBr
Q0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAg
Q0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6
a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKSk7Cit9CisKK3ZvaWQgTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2E6OmNvbXBsZXRlZChXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVy
cm9yJiYgYWRkcmVzc2VzT3JFcnJvcikKK3sKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoYWRkcmVzc2VzT3JFcnJvcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lODQxOThkMTZhMDEyZjQxYjNhMWFjN2U3YTVlYWFlM2IzY2RiNDBmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29s
dmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mgd2hlbiB3ZSBjb21wbGV0ZSB0aGUg
aW1wbGVtZW50YXRpb24gb2YgdGhlIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorY2xhc3MgTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB+TmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EoKSBmaW5hbDsKKworICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBh
ZGRyZXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworICAgIHZvaWQgY29tcGxl
dGVkKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJik7CisKK3ByaXZhdGU6CisgICAgUmV0
YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYThhOTE4ZmIyY2FjODRlNWZhNGI1ZTJkNzI5ZjE2
YzdiNmRhMWJlZC4uOGFjNTZhMGQxMDVlYTkwN2MyM2RiMmY3OGRkMzFlMzVhOGI2YzdiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MTUsNiArOTE1LDcgQEAKIAkJNDEwNDgyQ0QxREREMzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgy
Q0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFE
REQzMjRGMDBGMDA2RDAgLyogUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdv
cmsuaCAqLzsgfTsKIAkJNDExMkI1NTUxRkEwRUE3QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNv
bHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsK
KwkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3
MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJ
CTQxMUIyMjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0
RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovOyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAz
OUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5ODFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5jcHAgKi87IH07CiAJCTQxMzA3NUFBMURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3Jr
UlRDTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTMwNzU5QTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwICov
OyB9OwpAQCAtMzI4Nyw2ICszMjg4LDggQEAKIAkJNDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8q
IFJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29y
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDcxRjlGRDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5l
dHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAv
KiBMaWJXZWJSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExp
YldlYlJUQ05ldHdvcmsuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5
IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTmV0d29ya1JUQ1NvY2tldC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1NvY2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3
NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02MjM2LDYgKzYyMzksOCBAQAogCQkJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBO
ZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAw
RTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNB
QzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQz
QUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1
NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJ
NDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJ
CTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJ
NDEzMDc1OUQxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4g
Ki8sCkBAIC0xMDYyMSw2ICsxMDYyNiw3IEBACiAJCQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUx
IC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2
NTQzMTg1MDBGMzI4MkUgLyogTmV0d29ya1JUQ1Byb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2
IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3
NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxRCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhG
RSAvKiBOZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlZjc4ZjZhOTlmM2M3
YmVlNGYxYzU0NjcyMzYxNjYyY2RkMWQyNWIxLi45NzZhNzI0Njg3YTdhMjE2OWYzMTVlNjE2NzZh
MTdmNjE1MzBjYmMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDItMTkgIEFsZWphbmRybyBHLiBDYXN0cm8g
IDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9y
dCBhZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc4ODU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgbmV3IHVuaXQgdGVzdHMgZm9yIGhlIHJlc29sdmUgYW5kIHN0b3BSZXNvbHZlIGZ1
bmN0aW9ucy4gV2UgbmVlZCB0byBjb21waWxlIHRoZW0gZm9yIHRoZQorICAgICAgICBvdGhlciBw
bGF0Zm9ybXMgd2hlbiB0aGUgQVBJcyBhcmUgc3VwcG9ydGVkLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRE5TLmNwcDoKKwogMjAxOC0wMy0wNiAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVl
aHJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQVJNXSBEaXNhYmxlIHRlc3RzIHRoYXQgcnVuIG91
dCBvZiBtZW1vcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsu
Y21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDRhZWY2
OTUzY2QxNjE0YmY2Y2YwM2NlMjI0OGFmYjNjNmQyZGU1ZjguLjYyMDJmNDZiYWYwYjMzNzg1Yzg1
Y2FkNzJjNmIyODMzYmU4ODdkNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtODcsNiArODcsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XZWJDb3JlL0NTU1BhcnNlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKyAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNiN2U1OTMwMzJmMDgzYWNlNDllMmVhMzZmYTJk
YmY1ZTVkZDhkYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9ETlMuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXVEZTdHJp
bmdVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworYm9vbCBkb25lID0gZmFsc2U7CisKK1RFU1QoRE5TVGVzdCwg
Y2FuY2VsUmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygid3d3LndlYmtpdC5vcmci
KTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VS
VF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQu
ZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKTsKKworICAgICAgICByZXR1
cm47CisgICAgfTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICByZXNvbHZlRE5TKGhvc3RuYW1l
LCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc3RvcFJlc29s
dmVETlMoaWRlbnRpZmllcik7CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChETlNU
ZXN0LCBjYW50UmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxv
b3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygibm90YXZhbGlkZG9t
YWluLm5vdGF2YWxpZGRvbWFpbiIpOworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAxOworCisg
ICAgRE5TQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIgPSBbXShXZWJDb3JlOjpE
TlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisKKyAgICAgICAgQVNTRVJUX0ZBTFNFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKHJlc3VsdC5lcnJvcigpID09IFdlYkNvcmU6OkROU0Vycm9yOjpDYW50UmVz
b2x2ZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgcmVzb2x2ZUROUyhob3N0bmFtZSwgaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoRE5TVGVzdCwgcmVzb2x2
ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNv
bnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50
NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3Vs
dC5oYXNfdmFsdWUoKSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb25lID0g
ZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFtZSwgaWRlbnRpZmllciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335090</attachid>
            <date>2018-03-06 06:27:04 -0800</date>
            <delta_ts>2018-03-06 06:29:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180306152702.patch</filename>
            <type>text/plain</type>
            <size>82980</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM0ZjI5MDk3OGQyMzE2
MmNkZWVmYjdlODYzNjZhMjNjYTQ2NjRjNC4uZDA3MTc3MzdkODgwYzg3MzNiOWM4ODZlODdkZGE3
NDIyMzM4ODdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyIGZvciBDT0NPQSBjb2RlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVDRjo6cmVzb2x2ZSk6IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmg6IEFk
ZCB0aGUgbmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cmVzb2x2ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oOiBO
ZXcgY2xhc3MgaW5oZXJpdGluZyBmcm9tIHRoZSBETlNSZXNvbHZlUXVldWUgY2xhc3MsIGFkZGlu
ZworICAgICAgICBhIEhhc01hcCB3aXRoIHRoZSBhY3RpdmUgb3BlcmF0aW9ucywgaXQgYWxsb3dz
IHN0b3BwaW5nIHRoZW0uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29s
dmVRdWV1ZVNvdXAuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU1NvdXAuY3BwLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjayk6IENhbGxlZCB3aGVuIHRoZSByZXN1bHQgYWRkcmVzcyBmcm9tIHRoZSBz
b3VwIHBsYXRmb3JtIGlzIHJlYWR5LAorICAgICAgICBzZW5kcyB0aGUgYWRkcmVzcyB0byB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291
cDo6cmVzb2x2ZSk6IExhdW5jaCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gd2l0aCB0aGUgc291cCBs
aWJyYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBwcm9jZXNzIHdpdGggYSBHQ2FuY2Vs
bGFibGUuCisKIDIwMTgtMDMtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBSZW1vdmUgdW51c2VkIHNjcm9sbGluZy1yZWxh
dGVkIGNvZGUgaW4gVGV4dHVyZU1hcHBlckxheWVyLCBDb29yZGluYXRlZEdyYXBoaWNzIHN0YWNr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDg0MTNmODc5YTMyNTQyM2U2MDBiYzJhZGM0NDVkN2EyYzZiODNmNTYuLjQz
YTVkOTkxNjM1ZWI0Y2EzZjJjY2M4MzRiN2FlMmMyZTY0OGM0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTgtMDItMDggIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5j
b20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgc3Bl
Y2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0ZSB0aGUgZ2VuZXJpYyBjb2RlIGluIHRoZSBiYXNl
IGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHBvcnQKKyAgICAgICAgYWdub3N0
aWMgYW5kIGRlcGVuZGVudCBvbiBETlMgQVBJIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnkgd2hp
Y2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRhaWxzLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBh
biBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRo
ZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVS
ZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBB
ZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2Vi
cnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBE
TlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBp
biB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZpZXIg
b2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50aWZp
ZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVz
b2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmlj
IGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBBZGQg
YSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAgICAg
ICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBBdm9p
ZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBjbGFz
c2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFtZSBy
ZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTog
TWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNv
bHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAg
ICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2RzIHRo
YXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1ldGhv
ZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2luZyBz
dXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3JtIGRp
cmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMy0wNiAg
TXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIEltcGxlbWVudCBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggZWU3YjQwNzIwZjBk
OGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJkN2E3MTM5OWRlZWZkYzky
NTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01
MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3Rv
cmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggM2U4
NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1MjBhYjBmY2UwZGY0ODMy
Zjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTQx
Myw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQogCi0gICAgcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggMjNhOTQwMzRlYTkzNDQzOTNmOTlkMDRhMTkyODJlYjFjODY1
NmQ1Yy4uNzg4Y2ZkYjQ0NjY4NTNmMmJmZjMzZGY2MjJhZGQ4MzIyOGM3MjRjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE3MDcsNiArMTcwNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAK
K3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg1NDliZTM0MTM2
NzJhMDk2ZWFlMjI3ZjlhNmRhZmM0NDNjNjEyY2IuLjViZTI1NWJjZTQyZjBlY2ExNDNiOGI3MzNk
MzJjMDIzNTU4OGVlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDgyLDcgKzQ4Miw3
IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKIHBsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCiAKLXBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogcGxhdGZv
cm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OGM4ZDFmODAzN2ZiODkwYjMzNGI3
ZTAwYTRkOTgwZGMyN2EzY2YwLi41M2VlYzJiMDI2M2FiMDJkZTAyYjAwYzcwNWJhNzQ1ZmRlZTk1
NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMjU1LDYgKzIyNTUsNyBAQAogCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1
QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3RUU2ODQ2RjEyRDI2RTM4MDBF
NzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNv
bHZlUXVldWVDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAv
KiBKU0ZldGNoQm9keS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0Y0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggKi87IH07CiAJ
CTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Y0Qzk2RDkxQUQ0NDgz
NTAwMzY1QTUxIC8qIEpTUmVhZGFibGVTdHJlYW1TaW5rLmggKi87IH07CkBAIC05NjA0LDYgKzk2
MDUsNyBAQAogCQk3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0VFNjg0NUMxMkQyNkUzODAwRkY5NDE1IC8qIERO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERO
U1Jlc29sdmVRdWV1ZUNGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4
NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hCb2R5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUxIC8qIEpT
UmVhZGFibGVTdHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUmVhZGFibGVTdHJlYW1TaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEyMTI1LDggKzEyMTI3LDkgQEAKIAkJQjJFNEVDOTUwRDAwQzIyQjAwNDMyNjQzIC8qIFNW
R1pvb21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHWm9vbUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRTRFQzk2MEQwMEMyMkIwMDQz
MjY0MyAvKiBTVkdab29tRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdab29t
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkVEOTc3MDBCMUY1NUNF
MDAyNTdEMEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMkYzNEZFODBFODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RTBBQjc1
QTZFMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RjBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNTAwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlZEFuZ2xl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzIxLDYgKzE4NzI0LDcgQEAK
IAkJCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCAqLywK
IAkJCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuY3BwICovLAog
CQkJCUU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oICovLAorCQkJ
CTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovLAogCQkJCUIyRjM0RkU1MEU4
MkY4MTQwMEY2MjdDRCAvKiBETlMuaCAqLywKIAkJCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUg
LyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLywKIAkJCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAg
LyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8sCkBAIC0yMzQ0Nyw3ICsyMzQ1MSw4IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQk3RUU2ODQ0RTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCAqLywKIAkJCQk1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNh
dGVJbmZvLmggKi8sCi0JCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNw
cCAqLywKKwkJCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovLAorCQkJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVl
dWVDRk5ldC5oICovLAogCQkJCTdFRTY4NDUzMTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovLAogCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCkBAIC0yNzMxMSw2ICsyNzMxNiw3IEBACiAJ
CQkJRkQzMTYwOTExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NDczMEQ3NzEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkYzNEZFNjBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZEOSAvKiBE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNCQjU5RjQxNDU3QTQwRDAwQUM1NkZFIC8q
IERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGM0QwOTc2NTc2
NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKaW5kZXggNGE4MmViMDk5ZjVmMjcyMGNiZTNkMjVkMzY5MTAzNWI1
NmMwYmNmOC4uNDgwNjBiODUzYmVjYzlkYmIxOTNlYzZiYzg5MjhhNzRjMzg5YWU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCkBAIC0yMSw3ICsyMSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAotICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JD
dXJsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAu
dHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CmluZGV4IDhlNDdk
NjJhMzg2MzEyNzIyNmVlZDk0NzFiM2QzMjg2YzFiMjk3OTUuLmQ2NGZjZmJlYTI4MTQ3ZGFkZjQz
MGIyZmZiNGMwZmVhNjBiOTVkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKQEAgLTI3LDcgKzI3LDcgQEAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9D
cmVkZW50aWFsU3RvcmFnZVNvdXAuY3BwCi1wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5j
cHAKK3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlT
ZXJ2ZXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxMTIyZGIzZDg2N2ViZTZkYzA3MjkyMTIwZmVlOTc2ZTIzODI1MzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TLmgiCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhv
c3RuYW1lKTsKK30KKwordm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZUROUyh1aW50NjRfdCBpZGVudGlm
aWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuc3RvcFJl
c29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
Uy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAzYzUzNzE3NWU2MmMuLmYwN2Fj
YjUxZDY1ZGIwMGMxNTBkZjQwMTY1MGQ2MTg2ZWIyNWY5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFnbWEgb25jZQorCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2luY2x1ZGUg
PG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDx3aW5zb2NrMi5o
PgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7CitwdWJsaWM6CisgICAgSVBB
ZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisgICAg
ICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IGluX2Fk
ZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2luX2FkZHI7IH07CisKK3ByaXZh
dGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKK2VudW0gY2xhc3Mg
RE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2VsbGVkIH07CisKK3VzaW5nIERO
U0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNpbmcgRE5TQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5TQWRkcmVzc2VzT3JFcnJvciYm
KT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwog
Ci0jZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RE5TUmVzb2x2ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAppbmRleCBmZTNkOGM5MjUzYzA5MjJkYzBkZjU1ODU1M2Q2MjVmYTc2
NGVlZDE2Li42YWYwYzJmODk1ZTRlNmZjYzAwYWE3NGQ5Y2ZiMzQwMDNlOTFkYmRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3Bw
CkBAIC0yNyw2ICsyNywxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
U291cC5oIgorI2VsaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5o
IgorI2VsaWYgVVNFKENGKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZW5k
aWYKKwogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01MSw3ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHJlc29sdmluZ1JldHJ5
RGVsYXkgeyAxMDBfbXMgfTsKIAogRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNp
bmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT4g
cXVldWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZVBsYXRmb3Jt
PiBxdWV1ZTsKIAogICAgIHJldHVybiBxdWV1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCmluZGV4IDA3YjhmZGNiNjJmZmZlNTY0
NWY5MDA3ZTJmNDE4MDUwZTlmODExYjguLmY3N2I1NDBlYzYwMWIwNWM4MmY5YmIyMWE4ODdkMzVi
ZTg2ODEwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNS
ZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBETlNSZXNvbHZlUXVldWVf
aAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisjaW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTM5LDIyICs0MCwyNyBAQCBjbGFzcyBETlNSZXNvbHZlUXVldWUgewogICAgIGZyaWVuZCBO
ZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+OwogCiBwdWJsaWM6CisgICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAg
ICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xldG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZl
KHVpbnQ2NF90IGlkZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAg
ICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAg
dm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRl
OgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1l
ckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTc5YTU3ZDlkODIwZWQxM2IwMDJmZDFjZDJkN2M4NmU4ZTM3MjAyYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxpbiBKYWNrc29uICA8Y29sbGluakB3ZWJr
aXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0K
LSNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KLQotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDxDRk5ldHdvcmsv
Q0ZOZXR3b3JrLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlICJMb2Fk
ZXJSdW5Mb29wQ0YuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+Ci0jZW5kaWYK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNV
c2luZ1Byb3h5KCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRp
bmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKLSAgICBp
ZiAoIXByb3h5U2V0dGluZ3MpIHsKLSAgICAgICAgbV9pc1VzaW5nUHJveHkgPSBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJM
ID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVS
TCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxT
dHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Ci0KLSAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQ
cm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwotICAg
IFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkp
KTsKLQotICAgIENGSW5kZXggaHR0cFByb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cFBy
b3h5QXJyYXkuZ2V0KCkpOwotICAgIENGSW5kZXggaHR0cHNQcm94eUNvdW50ID0gQ0ZBcnJheUdl
dENvdW50KGh0dHBzUHJveHlBcnJheS5nZXQoKSk7Ci0gICAgaWYgKGh0dHBQcm94eUNvdW50ID09
IDEgJiYgQ0ZFcXVhbChDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25h
cnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoaHR0cFByb3h5QXJyYXkuZ2V0KCksIDApKSwg
a0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCi0gICAgICAgIGh0dHBQcm94eUNv
dW50ID0gMDsKLSAgICBpZiAoaHR0cHNQcm94eUNvdW50ID09IDEgJiYgQ0ZFcXVhbChDRkRpY3Rp
b25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1
ZUF0SW5kZXgoaHR0cHNQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtD
RlByb3h5VHlwZU5vbmUpKQotICAgICAgICBodHRwc1Byb3h5Q291bnQgPSAwOwotCi0gICAgbV9p
c1VzaW5nUHJveHkgPSBodHRwUHJveHlDb3VudCB8fCBodHRwc1Byb3h5Q291bnQ7Ci19Ci0KLXN0
YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJlZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlw
ZSwgY29uc3QgQ0ZTdHJlYW1FcnJvciosIHZvaWQqKQotewotICAgIEROU1Jlc29sdmVRdWV1ZTo6
c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7IC8vIEl0J3Mgb2sgdG8gY2FsbCBz
aW5nbGV0b24oKSBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgdGhlIHN0YXRpYyB2YXJpYWJsZSBo
YXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdy4KLSAgICBDRlJlbGVhc2UodGhlSG9z
dCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgUmV0
YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwg
aG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgIGlmICghaG9zdCkgewotICAg
ICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OwotICAg
IENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwg
YmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgotICAgIEJvb2xlYW4gcmVzdWx0ID0g
Q0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0jaWYgIVBMQVRGT1JNKFdJTikKLSAg
ICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4o
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSNlbHNlCi0gICAgLy8gT24gV2luZG93cywgd2Ug
cnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGll
bnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSNl
bmRpZgotICAgIENGSG9zdFN0YXJ0SW5mb1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFk
ZHJlc3NlcywgMCk7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigp
LmFkZChob3N0bmFtZSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzBkYWVlNjg5NDIyMDM3ZTc3ODRkZDg3YTc5Njg3NjQ5ZjVmZDZhNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxp
biBKYWNrc29uICA8Y29sbGluakB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisK
KyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPENGTmV0d29y
ay9DRk5ldHdvcmsuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRE5T
UmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5
c3RlbVByb3h5U2V0dGluZ3MoKSk7CisgICAgaWYgKCFwcm94eVNldHRpbmdzKSB7CisgICAgICAg
IG1faXNVc2luZ1Byb3h5ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRw
Oi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8i
KS5jcmVhdGVDRlVSTCgpOworCisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFy
cmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCks
IHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQ
cm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJM
LmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisKKyAgICBDRkluZGV4IGh0dHBQcm94eUNv
dW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBQcm94eUFycmF5LmdldCgpKTsKKyAgICBDRkluZGV4
IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkp
OworICAgIGlmIChodHRwUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGh0dHBQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlw
ZU5vbmUpKQorICAgICAgICBodHRwUHJveHlDb3VudCA9IDA7CisgICAgaWYgKGh0dHBzUHJveHlD
b3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQo
KSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0
cHNQcm94eUNvdW50ID0gMDsKKworICAgIG1faXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQg
fHwgaHR0cHNQcm94eUNvdW50OworfQorCitzdGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhv
c3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lk
KikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RD
b3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwgc2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0
aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBi
eSBub3cuCisgICAgQ0ZSZWxlYXNlKHRoZUhvc3QpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUNGTmV0OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9
IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSkpOworICAgIGlmICghaG9zdCkgeworICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291
bnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENGSG9zdENsaWVudENvbnRleHQg
Y29udGV4dCA9IHsgMCwgMCwgMCwgMCwgMCB9OworICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0g
aG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRD
YWxsYmFjaygpLgorICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhv
c3QsIGNsaWVudENhbGxiYWNrLCAmY29udGV4dCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7CisjaWYgIVBMQVRGT1JNKFdJTikKKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5M
b29wKGxlYWtlZEhvc3QsIENGUnVuTG9vcEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVz
KTsKKyNlbHNlCisgICAgLy8gT24gV2luZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdp
dGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxl
ZC4KKyAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGxlYWtlZEhvc3QsIGxvYWRlclJ1bkxv
b3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyNlbmRpZgorICAgIENGSG9zdFN0YXJ0SW5m
b1Jlc29sdXRpb24obGVha2VkSG9zdCwga0NGSG9zdEFkZHJlc3NlcywgMCk7Cit9CisKK3ZvaWQg
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ6OnJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAq
LywgdWludDY0X3QgLyogaWRlbnRpZmllciAqLywgRE5TQ29tcGxldGlvbkhhbmRsZXImJiAvKiBj
b21wbGV0aW9uSGFuZGxlciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpzdG9wUmVzb2x2ZSh1aW50NjRfdCAvKiBpZGVudGlmaWVy
ICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNzI1Y2E3MWNiNzkwZDI5ZTIyNDg2Y2I0YWYyYWU2OGRmNzgyMDc5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUNGTmV0
IGZpbmFsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikgZmluYWw7CisK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHVwZGF0ZUlzVXNpbmdQcm94eSgpIGZpbmFsOworCitwcml2
YXRlOgorICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsK
KwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVDRk5ldDsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0RO
U0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTMxZjU5ODRjMGNlOGVmYWU4OTgx
ZDkzYTI4MzBjYTA3MWNhMGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYg
VVNFKENVUkwpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9y
bVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUg
Ki8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVD
dXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZl
UXVldWVDdXJsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjMxYTc3OWVhMzI2OTU2Mzk0YjU2MThlZGE1ZGFm
MTAyMGViZTUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUN1cmwuaCIKKwor
I2lmIFVTRShDVVJMKQorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnVwZGF0ZUlzVXNpbmdQcm94
eSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVD
dXJsOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnJlc29s
dmUoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLywgdWludDY0X3QgLyogaWRlbnRpZmllciAq
LywgRE5TQ29tcGxldGlvbkhhbmRsZXImJiAvKiBjb21wbGV0aW9uSGFuZGxlciAqLykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnN0b3BS
ZXNvbHZlKHVpbnQ2NF90IC8qIGlkZW50aWZpZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4Y2E3
YzEyZmM4ZGM5NjE5NTIyNjk1Njc2YWI5MGQ0ODIwMzg3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5o
CkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZUN1cmwgZmluYWwgOiBwdWJsaWMg
RE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBETlNSZXNvbHZlUXVldWVDdXJsKCkgPSBk
ZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRf
dCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0
b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29s
dmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ3VybDsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNWEwODQ3ODQ4YjljMzUwMjQwNDk3N2JkYzNhYTIyNDlh
ODcxZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNp
bmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nl
c3Npb24uaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0
Zi9nbGliL0dVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNo
IHN0YXlzIGRpc2FibGVkIHVudGlsIHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCitzdGF0aWMgYm9v
bCBpc1VzaW5nSHR0cFByb3h5ID0gdHJ1ZTsKK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5
ID0gdHJ1ZTsKKworc3RhdGljIGJvb2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQorewor
ICAgIC8vIFdlIGhhdmUgYSBsaXN0IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUg
VVJJLiBJZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcworICAgIC8vIGRpcmVjdDovLyAo
dGhlIHVzdWFsIGNhc2UpLCB0aGVuIHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5
LiBUaGlzIGlzIHNpbWlsYXIgdG8KKyAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBj
b3VsZCBiZSBtYW55IHBvc3NpYmlsaXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5j
ZSwgYW5kCisgICAgLy8gaWYgd2UncmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVt
cHQgZWFjaCBvbmUgaW4gb3JkZXIsIGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCisgICAgLy8g
dG8gY29ubmVjdCwgbWVyZWx5IHRvIGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUg
dXNlZC4KKyAgICByZXR1cm4gdXJpcyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6
Ly8iKTsKK30KKworc3RhdGljIHZvaWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiBy
ZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJv
b2wqIGlzVXNpbmdQcm94eSkKK3sKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Cisg
ICAgR1VuaXF1ZVB0cjxjaGFyKj4gdXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2go
cmVzb2x2ZXIsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRp
bmdzOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
ICppc1VzaW5nUHJveHlUeXBlID0gZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOworICAgICpp
c1VzaW5nUHJveHkgPSBpc1VzaW5nSHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OworfQor
CitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNv
dXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJl
c29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRw
UHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCitzdGF0aWMgdm9pZCBw
cm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19Q
Uk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGlj
X2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6
dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sKKyAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNv
bHZlcjsKKyAgICBnX29iamVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9u
KCksICJwcm94eS1yZXNvbHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAg
QVNTRVJUKHJlc29sdmVyKTsKKworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJl
c29sdmVyLmdldCgpLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2
ZWRGb3JIdHRwVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7CisgICAgZ19wcm94eV9yZXNv
bHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIs
IG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworfQorCitzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3Vp
bnQsIHZvaWQqKQoreworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50
UmVxdWVzdENvdW50KCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2Fs
bGJhY2soU291cEFkZHJlc3MqIGFkZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sK
KyAgICBBU1NFUlQoZGF0YSk7CisgICAgYXV0byogcmVzb2x2ZVF1ZXVlID0gc3RhdGljX2Nhc3Q8
RE5TUmVzb2x2ZVF1ZXVlU291cCo+KGRhdGEpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllciA9
IEdQT0lOVEVSX1RPX1VJTlQoZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcyksICJp
ZGVudGlmaWVyIikpOworCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHJlc29sdmVRdWV1
ZS0+Z2V0Q29tcGxldGlvbkhhbmRsZXIoaWRlbnRpZmllcik7CisKKyAgICBpZiAoIWNvbXBsZXRp
b25IYW5kbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RB
VFVTX09LKSB7CisgICAgICAgIEROU0Vycm9yIGVycm9yID0gRE5TRXJyb3I6OlVua25vd247CisK
KyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgY2FzZSBTT1VQX1NUQVRVU19DQU5U
X1JFU09MVkU6CisgICAgICAgICAgICBlcnJvciA9IEROU0Vycm9yOjpDYW50UmVzb2x2ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX0NBTkNFTExFRDoKKyAg
ICAgICAgICAgIGVycm9yID0gRE5TRXJyb3I6OkNhbmNlbGxlZDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNPVVBfU1RBVFVTX09LOgorICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH07CisKKyAgICAgICAgKCpjb21w
bGV0aW9uSGFuZGxlcikobWFrZVVuZXhwZWN0ZWQoZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghc291cF9hZGRyZXNzX2lzX3Jlc29sdmVkKGFkZHJlc3MpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7
CisgICAgYWRkcmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CisgICAgaW50IGxlbjsK
KyAgICBhdXRvKiBpcEFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBzb2Nr
YWRkcl9pbio+KHNvdXBfYWRkcmVzc19nZXRfc29ja2FkZHIoYWRkcmVzcywgJmxlbikpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YoKmlwQWRkcmVzcykgLyBsZW47IGkrKykK
KyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoaXBB
ZGRyZXNzW2ldKSk7CisKKyAgICAoKmNvbXBsZXRpb25IYW5kbGVyKSh7IGFkZHJlc3NlcyB9KTsK
KworICAgIHJlc29sdmVRdWV1ZS0+cmVtb3ZlQ2FuY2VsQW5kQ29tcGxldGlvbkhhbmRsZXIoaWRl
bnRpZmllcik7Cit9CisKK2NvbnN0IFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyKiBETlNS
ZXNvbHZlUXVldWVTb3VwOjpnZXRDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGNvbXBsZXRpb25B
bmRDYW5jZWxIYW5kbGVycyA9IG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmZpbmQoaWRl
bnRpZmllcik7CisKKyAgICBpZiAoY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzID09IG1fY29t
cGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiAmY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLT52YWx1ZS5maXJzdDsK
K30KKwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpyZW1vdmVDYW5jZWxBbmRDb21wbGV0aW9u
SGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5yZW1vdmUoaWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNz
aW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ss
IG51bGxwdHIpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRHUmVmKHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUu
dXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1dG8gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19j
YW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVz
cy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9hc3luY19jb250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0
d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpKSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlc29sdmVk
V2l0aE9ic2VydmVyQ2FsbGJhY2ssIHRoaXMpOworCisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19P
QkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVudGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVu
dGlmaWVyKSk7CisKKyAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRp
ZmllciwgY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGF1dG8gY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXIgPSBtX2Nv
bXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGNv
bXBsZXRpb25BbmRDYW5jZWxIYW5kbGVyICE9IG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJz
LmVuZCgpKSB7CisgICAgICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKGNvbXBsZXRpb25BbmRDYW5j
ZWxIYW5kbGVyLT52YWx1ZS5zZWNvbmQuZ2V0KCkpOworICAgICAgICBtX2NvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgfQorfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jl
c29sdmVRdWV1ZVNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNSZXNvbHZlUXVldWVTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUwNTc1OTBjMmE0ZTM4MmI4ZWYxYmRm
ZDMwNWFhOWU5OGY5ZjUzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmgKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBETlNSZXNvbHZlUXVldWVTb3VwIGZpbmFsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7
CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlU291cCgpID0gZGVmYXVsdDsKKyAgICB2b2lk
IHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5T
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRf
dCBpZGVudGlmaWVyKSBmaW5hbDsKKworICAgIGNvbnN0IFdlYkNvcmU6OkROU0NvbXBsZXRpb25I
YW5kbGVyKiBnZXRDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2
b2lkIHJlbW92ZUNhbmNlbEFuZENvbXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIp
OworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKwor
cHJpdmF0ZToKKyAgICB1c2luZyBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSBzdGQ6OnBh
aXI8V2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXIsIEdSZWZQdHI8R0NhbmNlbGxhYmxlPj47
CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+IG1f
Y29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzOworCisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUo
Y29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9y
bSA9IEROU1Jlc29sdmVRdWV1ZVNvdXA7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2ExMTQ1N2RkZDIyMzNjNzQzYTE4Y2RmODM4MzY5MGZmOGY2Mzk1MC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUu
aCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgi
Ci0jaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCi0jaW5jbHVkZSA8bGlic291cC9zb3Vw
Lmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLS8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNh
YmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgotc3RhdGljIGJvb2wgaXNVc2luZ0h0
dHBQcm94eSA9IHRydWU7Ci1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7Ci0K
LXN0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiogdXJpcykKLXsKLSAgICAvLyBXZSBo
YXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhl
IGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKLSAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBj
YXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBz
aW1pbGFyIHRvCi0gICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFu
eSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAotICAg
IC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25l
IGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWluZwotICAgIC8vIHRvIGNvbm5lY3Qs
IG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCi0gICAg
cmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Ci19Ci0K
LXN0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5n
UHJveHkpCi17Ci0gICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIEdVbmlxdWVQ
dHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCBy
ZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBXVEZM
b2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBl
cnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAqaXNVc2luZ1By
b3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgpKTsKLSAgICAqaXNVc2luZ1Byb3h5
ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQcm94eTsKLX0KLQotc3RhdGljIHZv
aWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHko
R19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0
aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotc3RhdGljIHZvaWQgcHJveHlSZXNvbHZl
ZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xW
RVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wq
Pih1c2VyRGF0YSkpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1By
b3h5KCkKLXsKLSAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKLSAgICBnX29i
amVjdF9nZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5n
ZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNv
bHZlciIsICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUKHJlc29sdmVy
KTsKLQotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cDovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2Fs
bGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci0gICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5
bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5
UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOwotfQotCi1zdGF0
aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQotewot
ICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7
Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgc291cF9z
ZXNzaW9uX3ByZWZldGNoX2RucyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwg
aG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgcmVzb2x2ZWRDYWxsYmFjaywgbnVsbHB0
cik7Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhv
c3RuYW1lKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1MjA0
MDQ1ZGM3MjEzYTJmMDFmMmExNDA3YzBmMGJjY2YyMzcyMTIuLjJmZjFlNjlkZWE5ZjAxNWU0MzI2
NzY3YWIyMTBkNzZlODNiODI4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNDAsNiArNDAs
MTAgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpUaHJlYWQ+IGNyZWF0ZVRocmVhZCgpCkBAIC0xNjIs
MTUgKzE2NiwyMiBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6ZGlkUmVjZWl2ZU5ldHdvcmtS
VENTb2NrZXRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubgogICAgIE5ldHdvcmtSVENTb2Nr
ZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCksICp0aGlzKS5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorCiB2b2lkIE5ldHdv
cmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBhZGRyZXNzKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtSVENSZXNvbHZlcj4oW3RoaXMsIGlkZW50aWZpZXJdKE5ldHdvcmtSVENSZXNvbHZl
cjo6QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byByZXNvbHZl
ciA9IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBpZGVudGlm
aWVyXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQu
ZXJyb3IoKSAhPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OkVycm9yOjpDYW5jZWxsZWQpCisgICAgICAg
ICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCkK
ICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJl
c3MocmVzdWx0LnZhbHVlKCkpLCBpZGVudGlmaWVyKTsKKworICAgICAgICBhdXRvIGFkZHJlc3Nl
cyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdldCgpLCBbXSAoYXV0byYgYWRkcmVzcykgewor
ICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6OklQQWRkcmVzcyB7IHJ0Yzo6SVBBZGRyZXNz
IHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9OworICAgICAgICB9KTsKKworICAgICAgICBtX2Nv
bm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0
UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3NlcyksIGlkZW50aWZpZXIpOwogICAgIH0pOwogICAgIHJl
c29sdmVyLT5zdGFydChhZGRyZXNzKTsKICAgICBtX3Jlc29sdmVycy5hZGQoaWRlbnRpZmllciwg
V1RGTW92ZShyZXNvbHZlcikpOwpAQCAtMTgyLDYgKzE5MywzNCBAQCB2b2lkIE5ldHdvcmtSVENQ
cm92aWRlcjo6c3RvcFJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAgICAgIHJlc29s
dmVyLT5zdG9wKCk7CiB9CiAKKyNlbHNlCisKK3ZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFkZHJlc3MpCit7
CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBpZGVudGlmaWVyXShXZWJDb3Jl
OjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFy
ZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IoKSAhPSBX
ZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKQorICAgICAgICAgICAgICAgIG1fY29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpSZXNvbHZlZEFk
ZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBhdXRvIGFkZHJlc3NlcyA9IFdURjo6bWFwKHJlc3VsdC52YWx1ZSgpLmdl
dCgpLCBbXSAoYXV0byYgYWRkcmVzcykgeworICAgICAgICAgICAgcmV0dXJuIFJUQ05ldHdvcms6
OklQQWRkcmVzcyB7IHJ0Yzo6SVBBZGRyZXNzIHsgYWRkcmVzcy5nZXRTaW5BZGRyKCkgfSB9Owor
ICAgICAgICB9KTsKKworICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKGFkZHJlc3NlcyksIGlk
ZW50aWZpZXIpOworICAgIH07CisKKyAgICBXZWJDb3JlOjpyZXNvbHZlRE5TKGFkZHJlc3MsIGlk
ZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3Jr
UlRDUHJvdmlkZXI6OnN0b3BSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIFdl
YkNvcmU6OnN0b3BSZXNvbHZlRE5TKGlkZW50aWZpZXIpOworfQorCisjZW5kaWYKKwogdm9pZCBO
ZXR3b3JrUlRDUHJvdmlkZXI6OmNsb3NlTGlzdGVuaW5nU29ja2V0cyhGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2lzTGlzdGVuaW5nU29ja2V0QXV0
aG9yaXplZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKaW5kZXggM2M5OTg3ZDA0ODA4ZjNhNzE4NTc3
MzExZjllNWNiMTZjM2ZmMDE2ZS4uMWJmYWZhNDZiNzIwYzNjMjIxM2E3MTFjYzdiZGM2NmQxYWI3
NzE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCkBAIC0zMiw2OCArMzIsMzQgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShDRkhvc3RSZWYgaG9zdFJl
ZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFtRXJyb3IgKmVycm9yLCB2
b2lkICppbmZvKQorLy8gRklYTUU6IFVzZSB0aGUgZnVuY3Rpb24gYWZ0ZXIgcmVtb3ZpbmcgdGhl
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLgorI2lmICFQTEFURk9STShDT0NPQSkKK3N0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+IE5ldHdvcmtSVENSZXNvbHZlcjo6Y3JlYXRlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsK
LQotICAgIGlmIChlcnJvci0+ZG9tYWluKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhh
bmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKGluZm8pOwotICAgIGF1dG8qIHJl
c29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyKj4oaW5mbyk7Ci0KLSAgICBC
b29sZWFuIHJlc3VsdDsKLSAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJy
YXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKLSAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLQotICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRD
b3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7Ci0gICAgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVz
cz4gYWRkcmVzc2VzOwotICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50
KTsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkg
ewotICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOwotICAgICAgICBhdXRvKiBhZGRyZXNzID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRl
UHRyKGRhdGEpKTsKLSAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChSVENOZXR3b3Jr
OjpJUEFkZHJlc3MocnRjOjpJUEFkZHJlc3MoYWRkcmVzcy0+c2luX2FkZHIpKSk7Ci0gICAgfQot
ICAgIHJlc29sdmVyLT5jb21wbGV0ZWQoYWRkcmVzc2VzKTsKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4obmV3IE5ldHdvcmtSVENSZXNvbHZlcihpZGVudGlm
aWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQorI2VuZGlmCiAKLU5ldHdvcmtS
VENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCi0gICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKQorTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIodWludDY0
X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKIHsKIH0KIAogTmV0d29ya1JU
Q1Jlc29sdmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKCkKIHsKLSAgICBDRkhvc3RVbnNjaGVkdWxl
RnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7Ci0gICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0cik7CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1f
Y29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChFcnJvcjo6VW5rbm93bikpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6VW5rbm93bikpOwogfQogCiB2b2lkIE5ldHdvcmtS
VENSZXNvbHZlcjo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogewotICAgIG1faG9zdCA9
IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVz
cy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0gICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250
ZXh0ID0geyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07Ci0gICAgQ0ZIb3N0
U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7Ci0gICAgQ0ZI
b3N0U2NoZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQo
KSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0
YXJ0SW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRy
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICBXZWJDb3JlOjpyZXNv
bHZlRE5TKGFkZHJlc3MsIG1faWRlbnRpZmllciwgbV9jb21wbGV0aW9uSGFuZGxlcik7CiB9CiAK
IHZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdG9wKCkKIHsKLSAgICBDRkhvc3RDYW5jZWxJbmZv
UmVzb2x1dGlvbihtX2hvc3QuZ2V0KCksIENGSG9zdEluZm9UeXBlOjprQ0ZIb3N0QWRkcmVzc2Vz
KTsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9u
SGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9y
OjpDYW5jZWxsZWQpKTsKLX0KLQotdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZChj
b25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYgYWRkcmVzc2VzKQotewotICAgIGlm
IChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhZGRyZXNzZXMgfSk7CisgICAgV2ViQ29yZTo6
c3RvcFJlc29sdmVETlMobV9pZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlci5oCmluZGV4IDFiY2Y3MzZlNzY3YTY3MDRiNWNlOTdjZGE4YzcyM2JkZTM1
ZTcyNzguLjM4ZTVmNzYyNzJjNTgwMmJjYjAzZWFiNzM2NDE4MDA2NDk5NjUzZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1
ZGUgIlJUQ05ldHdvcmsuaCIKLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIb3N0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9ETlMuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzYsMjIgKzM2LDE3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrUlRDUmVzb2x2ZXIgewogcHVibGljOgotICAg
IGVudW0gY2xhc3MgRXJyb3IgeyBVbmtub3duLCBDYW5jZWxsZWQgfTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4gY3JlYXRlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyJiYpOwogCi0gICAgdXNpbmcgQWRkcmVz
c2VzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgVmVjdG9y
PFJUQ05ldHdvcms6OklQQWRkcmVzcz4+LCBFcnJvcj47Ci0gICAgdXNpbmcgQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWRkcmVzc2VzT3JFcnJvciYmKT47
CisgICAgTmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkRO
U0NvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZpcnR1YWwgfk5ldHdvcmtSVENSZXNvbHZlcigp
OwogCi0gICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyKENvbXBsZXRpb25IYW5kbGVyJiYp
OwotICAgIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoY29u
c3QgU3RyaW5nJiBhZGRyZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdm9p
ZCBzdGFydChjb25zdCBTdHJpbmcmIGFkZHJlc3MpOwotICAgIHZvaWQgc3RvcCgpOwotCi0gICAg
dm9pZCBjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4mKTsKLQot
cHJpdmF0ZToKLSAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwotICAg
IFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK3Byb3RlY3RlZDoKKyAgICB1aW50NjRfdCBt
X2lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0
aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxZmRiNTU1Mjc5ZWJlMGIyMjE3MWU1MmVjMDA3MTY1
OThiMTU5OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCIKKworI2lmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB2b2lkIHJlc29sdmVkTmFtZShD
Rkhvc3RSZWYgaG9zdFJlZiwgQ0ZIb3N0SW5mb1R5cGUgdHlwZUluZm8sIGNvbnN0IENGU3RyZWFt
RXJyb3IgKmVycm9yLCB2b2lkICppbmZvKQoreworICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8s
ICF0eXBlSW5mbyk7CisKKyAgICBBU1NFUlQoaW5mbyk7CisgICAgYXV0byogcmVzb2x2ZXIgPSBz
dGF0aWNfY2FzdDxOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSo+KGluZm8pOworCisgICAgaWYgKGVy
cm9yLT5kb21haW4pIHsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUs
IGJ1dCBpbmZvIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCisgICAgICAgIHJlc29s
dmVyLT5jb21wbGV0ZWQobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVua25vd24p
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEJvb2xlYW4gcmVzdWx0OworICAgIENG
QXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNz
aW5nKGhvc3RSZWYsICZyZXN1bHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OworCisgICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2Vz
KTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7CisgICAgYWRkcmVz
c2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOworCisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgIENGRGF0YVJlZiBkYXRh
ID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2VzLCBp
bmRleCk7CisgICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHN0
cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOworICAgICAgICBhZGRy
ZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcygqYWRkcmVzcykpOworICAg
IH0KKyAgICByZXNvbHZlci0+Y29tcGxldGVkKHsgYWRkcmVzc2VzIH0pOworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1
aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jl
c29sdmVyPihuZXcgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoaWRlbnRpZmllciwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKK30KKworTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6Ok5ldHdv
cmtSVENSZXNvbHZlckNvY29hKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBOZXR3b3JrUlRDUmVzb2x2
ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCit7Cit9CisKK05ldHdv
cmtSVENSZXNvbHZlckNvY29hOjp+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKQoreworICAgIENG
SG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJl
bnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0
LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYTo6c3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIG1faG9zdCA9IGFkb3B0
Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRkcmVzcy5jcmVh
dGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0g
eyAwLCB0aGlzLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAgQ0ZIb3N0U2V0Q2xp
ZW50KG1faG9zdC5nZXQoKSwgcmVzb2x2ZWROYW1lLCAmY29udGV4dCk7CisgICAgQ0ZIb3N0U2No
ZWR1bGVXaXRoUnVuTG9vcChtX2hvc3QuZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NG
UnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFN0YXJ0SW5m
b1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBrQ0ZIb3N0QWRkcmVzc2VzLCBudWxscHRyKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYTo6c3RvcCgpCit7CisgICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9o
b3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7CisgICAgaWYgKGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6
Q2FuY2VsbGVkKSk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OmNvbXBsZXRl
ZChXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgYWRkcmVzc2VzT3JFcnJvcikKK3sKKyAg
ICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxl
cikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYWRkcmVzc2VzT3JFcnJvcikp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODQxOThkMTZhMDEyZjQxYjNh
MWFjN2U3YTVlYWFlM2IzY2RiNDBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQor
CisjaW5jbHVkZSAiTmV0d29ya1JUQ1Jlc29sdmVyLmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsv
Q0ZIb3N0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
Y2xhc3Mgd2hlbiB3ZSBjb21wbGV0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LgorY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EgZmluYWwgOiBwdWJs
aWMgTmV0d29ya1JUQ1Jlc29sdmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9u
SGFuZGxlciYmKTsKKyAgICB+TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EoKSBmaW5hbDsKKworICAg
IHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKSBmaW5hbDsKKyAgICB2b2lkIHN0b3Ao
KSBmaW5hbDsKKworICAgIHZvaWQgY29tcGxldGVkKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJy
b3ImJik7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gbV9ob3N0OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYThh
OTE4ZmIyY2FjODRlNWZhNGI1ZTJkNzI5ZjE2YzdiNmRhMWJlZC4uOGFjNTZhMGQxMDVlYTkwN2My
M2RiMmY3OGRkMzFlMzVhOGI2YzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTUsNiArOTE1LDcgQEAKIAkJNDEwNDgyQ0QxRERE
MzI0QzAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdv
cmsuY3BwICovOyB9OwogCQk0MTA0ODJDRTFEREQzMjRGMDBGMDA2RDAgLyogUlRDTmV0d29yay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwNDgyQ0Mx
REREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDExMkI1NTUxRkEwRUE3
QTAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0
d29ya1JUQ1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8q
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAgKi87IH07CiAJCTQxMUIyMjY0MUUzNzFCQTYwMDRGNzM2MyAvKiBM
aWJXZWJSVENOZXR3b3JrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICov
OyB9OwogCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5ODFE
RTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgKi87IH07CiAJCTQxMzA3NUFB
MURFODVGMzAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzU5QTFERTg0RkIwMDAzOUVDNjkg
LyogTmV0d29ya1JUQ01vbml0b3IuY3BwICovOyB9OwpAQCAtMzI4Nyw2ICszMjg4LDggQEAKIAkJ
NDEwNDgyQ0MxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUlRDTmV0d29yay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlci5j
cHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8q
IE5ldHdvcmtSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBO
ZXR3b3JrUlRDUmVzb2x2ZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDExMkI1NDcxRjlG
RDNBQjAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENSZXNvbHZlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMUIyMjYyMUUzNzEyNDQwMDRGNzM2MyAvKiBMaWJXZWJSVENOZXR3b3JrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ05ldHdvcmsuaDsgcGF0aCA9IE5ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1JUQ1NvY2tldC5jcHA7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3Jr
UlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSVENT
b2NrZXQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDU29ja2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjM2LDYgKzYyMzksOCBAQAogCQkJCTQx
REM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5j
cHAgKi8sCiAJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZl
ci5oICovLAorCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5jcHAgKi8sCisJCQkJNDExMkI1NDgxRjlGRDNBQzAwRTY3OTg2IC8qIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hLmggKi8sCiAJCQkJNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5l
dHdvcmtSVENTb2NrZXQuY3BwICovLAogCQkJCTQxMzA3NTk5MURFODRGQjAwMDM5RUM2OSAvKiBO
ZXR3b3JrUlRDU29ja2V0LmggKi8sCiAJCQkJNDEzMDc1OUQxREU4NEZCMDAwMzlFQzY5IC8qIE5l
dHdvcmtSVENTb2NrZXQubWVzc2FnZXMuaW4gKi8sCkBAIC0xMDYyMSw2ICsxMDYyNiw3IEBACiAJ
CQkJNDFEQzQ1OTcxRTNENkUyMjAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkUgLyogTmV0d29ya1JUQ1By
b3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMTJCNTU1MUZB
MEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDExMkI1NTUxRkEwRUE3QTAwRTY3OTg2IC8qIE5ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUE5MURFODVGMkMwMDM5RUM2OSAvKiBOZXR3b3Jr
UlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgx
RCAvKiBOZXR3b3JrUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDODI4M0FDMTZCNEJGM0YwMEEyNzhGRSAvKiBOZXR3b3JrU2VydmljZUVudHJ5UG9pbnQu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBlZjc4ZjZhOTlmM2M3YmVlNGYxYzU0NjcyMzYxNjYyY2RkMWQyNWIxLi45
NzZhNzI0Njg3YTdhMjE2OWYzMTVlNjE2NzZhMTdmNjE1MzBjYmMwIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgt
MDItMTkgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAg
TWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3IHVuaXQgdGVzdHMgZm9yIGhl
IHJlc29sdmUgYW5kIHN0b3BSZXNvbHZlIGZ1bmN0aW9ucy4gV2UgbmVlZCB0byBjb21waWxlIHRo
ZW0gZm9yIHRoZQorICAgICAgICBvdGhlciBwbGF0Zm9ybXMgd2hlbiB0aGUgQVBJcyBhcmUgc3Vw
cG9ydGVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcDoKKwogMjAxOC0wMy0w
NiAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQVJN
XSBEaXNhYmxlIHRlc3RzIHRoYXQgcnVuIG91dCBvZiBtZW1vcnkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IDRhZWY2OTUzY2QxNjE0YmY2Y2YwM2NlMjI0OGFmYjNjNmQy
ZGU1ZjguLjYyMDJmNDZiYWYwYjMzNzg1Yzg1Y2FkNzJjNmIyODMzYmU4ODdkNDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtODcsNiArODcsNyBAQCBhZGRfZXhlY3V0
YWJsZShUZXN0V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxl
ci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0NTU1BhcnNlci5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ROUy5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5jcHAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGNi
N2U1OTMwMzJmMDgzYWNlNDllMmVhMzZmYTJkYmY1ZTVkZDhkYQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwCkBAIC0wLDAgKzEsMTA1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVdGls
aXRpZXMuaCIKKyNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPFdl
YkNvcmUvRE5TLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0V4cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworYm9vbCBkb25l
ID0gZmFsc2U7CisKK1RFU1QoRE5TVGVzdCwgY2FuY2VsUmVzb2x2ZUROUykKK3sKKyAgICBSdW5M
b29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFt
ZSA9IFN0cmluZygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0g
MTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2Vi
Q29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRv
bmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNFcnJvcjo6
Q2FuY2VsbGVkKTsKKworICAgICAgICByZXR1cm47CisgICAgfTsKKworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICByZXNvbHZlRE5TKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgc3RvcFJlc29sdmVETlMoaWRlbnRpZmllcik7CisgICAgVXRpbDo6
cnVuKCZkb25lKTsKK30KKworVEVTVChETlNUZXN0LCBjYW50UmVzb2x2ZUROUykKK3sKKyAgICBS
dW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0
bmFtZSA9IFN0cmluZygibm90YXZhbGlkZG9tYWluLm5vdGF2YWxpZGRvbWFpbiIpOworICAgIHVp
bnQ2NF90IGlkZW50aWZpZXIgPSAxOworCisgICAgRE5TQ29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXIgPSBbXShXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisKKyAgICAgICAgQVNTRVJUX0ZBTFNFKHJl
c3VsdC5oYXNfdmFsdWUoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5lcnJvcigpID09
IFdlYkNvcmU6OkROU0Vycm9yOjpDYW50UmVzb2x2ZSk7CisKKyAgICAgICAgcmV0dXJuOworICAg
IH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFtZSwgaWRlbnRp
ZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7
Cit9CisKK1RFU1QoRE5TVGVzdCwgcmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0aWFs
aXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmluZygi
d3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIERO
U0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRk
cmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
CisgICAgICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFt
ZSwgaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFV0aWw6OnJ1
bigmZG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335091</attachid>
            <date>2018-03-06 06:29:05 -0800</date>
            <delta_ts>2018-03-06 06:52:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180306152903.patch</filename>
            <type>text/plain</type>
            <size>83140</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM0ZjI5MDk3OGQyMzE2
MmNkZWVmYjdlODYzNjZhMjNjYTQ2NjRjNC4uZDA3MTc3MzdkODgwYzg3MzNiOWM4ODZlODdkZGE3
NDIyMzM4ODdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyIGZvciBDT0NPQSBjb2RlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVDRjo6cmVzb2x2ZSk6IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmg6IEFk
ZCB0aGUgbmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cmVzb2x2ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oOiBO
ZXcgY2xhc3MgaW5oZXJpdGluZyBmcm9tIHRoZSBETlNSZXNvbHZlUXVldWUgY2xhc3MsIGFkZGlu
ZworICAgICAgICBhIEhhc01hcCB3aXRoIHRoZSBhY3RpdmUgb3BlcmF0aW9ucywgaXQgYWxsb3dz
IHN0b3BwaW5nIHRoZW0uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29s
dmVRdWV1ZVNvdXAuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU1NvdXAuY3BwLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjayk6IENhbGxlZCB3aGVuIHRoZSByZXN1bHQgYWRkcmVzcyBmcm9tIHRoZSBz
b3VwIHBsYXRmb3JtIGlzIHJlYWR5LAorICAgICAgICBzZW5kcyB0aGUgYWRkcmVzcyB0byB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291
cDo6cmVzb2x2ZSk6IExhdW5jaCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gd2l0aCB0aGUgc291cCBs
aWJyYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBwcm9jZXNzIHdpdGggYSBHQ2FuY2Vs
bGFibGUuCisKIDIwMTgtMDMtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBSZW1vdmUgdW51c2VkIHNjcm9sbGluZy1yZWxh
dGVkIGNvZGUgaW4gVGV4dHVyZU1hcHBlckxheWVyLCBDb29yZGluYXRlZEdyYXBoaWNzIHN0YWNr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDg0MTNmODc5YTMyNTQyM2U2MDBiYzJhZGM0NDVkN2EyYzZiODNmNTYuLjQz
YTVkOTkxNjM1ZWI0Y2EzZjJjY2M4MzRiN2FlMmMyZTY0OGM0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTgtMDItMDggIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5j
b20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgc3Bl
Y2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0ZSB0aGUgZ2VuZXJpYyBjb2RlIGluIHRoZSBiYXNl
IGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHBvcnQKKyAgICAgICAgYWdub3N0
aWMgYW5kIGRlcGVuZGVudCBvbiBETlMgQVBJIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnkgd2hp
Y2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRhaWxzLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBh
biBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRo
ZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVS
ZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBB
ZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2Vi
cnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBE
TlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBp
biB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZpZXIg
b2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50aWZp
ZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVz
b2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmlj
IGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBBZGQg
YSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAgICAg
ICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBBdm9p
ZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBjbGFz
c2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFtZSBy
ZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTog
TWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNv
bHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAg
ICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2RzIHRo
YXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1ldGhv
ZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2luZyBz
dXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3JtIGRp
cmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMy0wNiAg
TXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIEltcGxlbWVudCBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggZWU3YjQwNzIwZjBk
OGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJkN2E3MTM5OWRlZWZkYzky
NTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01
MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3Rv
cmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggM2U4
NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1MjBhYjBmY2UwZGY0ODMy
Zjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTQx
Myw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQogCi0gICAgcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggMjNhOTQwMzRlYTkzNDQzOTNmOTlkMDRhMTkyODJlYjFjODY1
NmQ1Yy4uNzg4Y2ZkYjQ0NjY4NTNmMmJmZjMzZGY2MjJhZGQ4MzIyOGM3MjRjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE3MDcsNiArMTcwNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAK
K3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg1NDliZTM0MTM2
NzJhMDk2ZWFlMjI3ZjlhNmRhZmM0NDNjNjEyY2IuLjViZTI1NWJjZTQyZjBlY2ExNDNiOGI3MzNk
MzJjMDIzNTU4OGVlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDgyLDcgKzQ4Miw3
IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKIHBsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCiAKLXBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogcGxhdGZv
cm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OGM4ZDFmODAzN2ZiODkwYjMzNGI3
ZTAwYTRkOTgwZGMyN2EzY2YwLi41M2VlYzJiMDI2M2FiMDJkZTAyYjAwYzcwNWJhNzQ1ZmRlZTk1
NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMjU1LDYgKzIyNTUsNyBAQAogCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1
QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3RUU2ODQ2RjEyRDI2RTM4MDBF
NzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNv
bHZlUXVldWVDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAv
KiBKU0ZldGNoQm9keS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0Y0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggKi87IH07CiAJ
CTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Y0Qzk2RDkxQUQ0NDgz
NTAwMzY1QTUxIC8qIEpTUmVhZGFibGVTdHJlYW1TaW5rLmggKi87IH07CkBAIC05NjA0LDYgKzk2
MDUsNyBAQAogCQk3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0VFNjg0NUMxMkQyNkUzODAwRkY5NDE1IC8qIERO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERO
U1Jlc29sdmVRdWV1ZUNGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4
NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hCb2R5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUxIC8qIEpT
UmVhZGFibGVTdHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUmVhZGFibGVTdHJlYW1TaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEyMTI1LDggKzEyMTI3LDkgQEAKIAkJQjJFNEVDOTUwRDAwQzIyQjAwNDMyNjQzIC8qIFNW
R1pvb21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHWm9vbUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRTRFQzk2MEQwMEMyMkIwMDQz
MjY0MyAvKiBTVkdab29tRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdab29t
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkVEOTc3MDBCMUY1NUNF
MDAyNTdEMEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMkYzNEZFODBFODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RTBBQjc1
QTZFMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RjBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNTAwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlZEFuZ2xl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzIxLDYgKzE4NzI0LDcgQEAK
IAkJCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCAqLywK
IAkJCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuY3BwICovLAog
CQkJCUU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oICovLAorCQkJ
CTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovLAogCQkJCUIyRjM0RkU1MEU4
MkY4MTQwMEY2MjdDRCAvKiBETlMuaCAqLywKIAkJCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUg
LyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLywKIAkJCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAg
LyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8sCkBAIC0yMzQ0Nyw3ICsyMzQ1MSw4IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQk3RUU2ODQ0RTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCAqLywKIAkJCQk1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNh
dGVJbmZvLmggKi8sCi0JCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNw
cCAqLywKKwkJCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovLAorCQkJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVl
dWVDRk5ldC5oICovLAogCQkJCTdFRTY4NDUzMTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovLAogCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCkBAIC0yNzMxMSw2ICsyNzMxNiw3IEBACiAJ
CQkJRkQzMTYwOTExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NDczMEQ3NzEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkYzNEZFNjBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZEOSAvKiBE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNCQjU5RjQxNDU3QTQwRDAwQUM1NkZFIC8q
IERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGM0QwOTc2NTc2
NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKaW5kZXggNGE4MmViMDk5ZjVmMjcyMGNiZTNkMjVkMzY5MTAzNWI1
NmMwYmNmOC4uNDgwNjBiODUzYmVjYzlkYmIxOTNlYzZiYzg5MjhhNzRjMzg5YWU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCkBAIC0yMSw3ICsyMSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAotICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JD
dXJsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAu
dHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CmluZGV4IDhlNDdk
NjJhMzg2MzEyNzIyNmVlZDk0NzFiM2QzMjg2YzFiMjk3OTUuLmQ2NGZjZmJlYTI4MTQ3ZGFkZjQz
MGIyZmZiNGMwZmVhNjBiOTVkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKQEAgLTI3LDcgKzI3LDcgQEAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9D
cmVkZW50aWFsU3RvcmFnZVNvdXAuY3BwCi1wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5j
cHAKK3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlT
ZXJ2ZXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxMTIyZGIzZDg2N2ViZTZkYzA3MjkyMTIwZmVlOTc2ZTIzODI1MzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TLmgiCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhv
c3RuYW1lKTsKK30KKwordm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZUROUyh1aW50NjRfdCBpZGVudGlm
aWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuc3RvcFJl
c29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
Uy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAzYzUzNzE3NWU2MmMuLmYwN2Fj
YjUxZDY1ZGIwMGMxNTBkZjQwMTY1MGQ2MTg2ZWIyNWY5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFnbWEgb25jZQorCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2luY2x1ZGUg
PG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDx3aW5zb2NrMi5o
PgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7CitwdWJsaWM6CisgICAgSVBB
ZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisgICAg
ICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IGluX2Fk
ZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2luX2FkZHI7IH07CisKK3ByaXZh
dGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKK2VudW0gY2xhc3Mg
RE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2VsbGVkIH07CisKK3VzaW5nIERO
U0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNpbmcgRE5TQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5TQWRkcmVzc2VzT3JFcnJvciYm
KT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwog
Ci0jZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RE5TUmVzb2x2ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAppbmRleCBmZTNkOGM5MjUzYzA5MjJkYzBkZjU1ODU1M2Q2MjVmYTc2
NGVlZDE2Li42YWYwYzJmODk1ZTRlNmZjYzAwYWE3NGQ5Y2ZiMzQwMDNlOTFkYmRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3Bw
CkBAIC0yNyw2ICsyNywxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
U291cC5oIgorI2VsaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5o
IgorI2VsaWYgVVNFKENGKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZW5k
aWYKKwogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01MSw3ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHJlc29sdmluZ1JldHJ5
RGVsYXkgeyAxMDBfbXMgfTsKIAogRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNp
bmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT4g
cXVldWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZVBsYXRmb3Jt
PiBxdWV1ZTsKIAogICAgIHJldHVybiBxdWV1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCmluZGV4IDA3YjhmZGNiNjJmZmZlNTY0
NWY5MDA3ZTJmNDE4MDUwZTlmODExYjguLjNhYjk3YjEwMWM2ODNhNmQ0OTRhZmE0MmM1Y2VkZTBk
YWM3NGMyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNS
ZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBETlNSZXNvbHZlUXVldWVf
aAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisjaW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFzcyBETlNSZXNvbHZlUXVldWUgewogICAgIGZyaWVuZCBO
ZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+OwogCiBwdWJsaWM6CisgICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAg
ICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xldG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBE
TlNDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZl
KHVpbnQ2NF90IGlkZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAg
ICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2
ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAg
dm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRl
OgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1l
ckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1f
bmFtZXM7CiAgICAgc3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9v
bCBtX2lzVXNpbmdQcm94eTsKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdFByb3h5RW5hYmxlZFN0
YXR1c0NoZWNrVGltZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNDRk5ldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OWE1N2Q5
ZDgyMGVkMTNiMDAyZmQxY2QyZDdjODZlOGUzNzIwMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9ETlNDRk5ldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsaW4gSmFja3NvbiAgPGNvbGxpbmpAd2Via2l0Lm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaW5jbHVkZSAi
VVJMLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5o
PgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENG
LmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgotI2VuZGlmCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnVwZGF0ZUlzVXNpbmdQcm94eSgp
Ci17Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyA9IGFkb3B0
Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7Ci0gICAgaWYgKCFwcm94eVNl
dHRpbmdzKSB7Ci0gICAgICAgIG1faXNVc2luZ1Byb3h5ID0gZmFsc2U7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQYXJz
ZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0
cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotCi0gICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVS
TChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGll
c0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7Ci0KLSAgICBD
RkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGh0dHBQcm94eUFycmF5Lmdl
dCgpKTsKLSAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRw
c1Byb3h5QXJyYXkuZ2V0KCkpOwotICAgIGlmIChodHRwUHJveHlDb3VudCA9PSAxICYmIENGRXF1
YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlw
ZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBodHRwUHJveHlDb3VudCA9IDA7Ci0g
ICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0
dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVO
b25lKSkKLSAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsKLQotICAgIG1faXNVc2luZ1Byb3h5
ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50OwotfQotCi1zdGF0aWMgdm9pZCBj
bGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUsIGNvbnN0IENG
U3RyZWFtRXJyb3IqLCB2b2lkKikKLXsKLSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigp
LmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRvIGNhbGwgc2luZ2xldG9uKCkg
ZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFyaWFibGUgaGFzIGFscmVhZHkg
YmVlbiBpbml0aWFsaXplZCBieSBub3cuCi0gICAgQ0ZSZWxlYXNlKHRoZUhvc3QpOwotfQotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIFJldGFpblB0cjxDRkhv
c3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBpZiAoIWhvc3QpIHsKLSAgICAgICAgZGVjcmVt
ZW50UmVxdWVzdENvdW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDRkhvc3RD
bGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAgfTsKLSAgICBDRkhvc3RSZWYg
bGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2Vk
IGZyb20gY2xpZW50Q2FsbGJhY2soKS4KLSAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENs
aWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRleHQpOwotICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOwotI2lmICFQTEFURk9STShXSU4pCi0gICAgQ0ZIb3N0U2No
ZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7Ci0jZWxzZQotICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1biBhIHNlcGFy
YXRlIHRocmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50Q2FsbGJhY2sg
d2lsbCBiZSBjYWxsZWQuCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0
LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0jZW5kaWYKLSAgICBD
Rkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDAp
OwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5h
bWUpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZGFlZTY4OTQy
MjAzN2U3Nzg0ZGQ4N2E3OTY4NzY0OWY1ZmQ2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApAQCAt
MCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsaW4gSmFja3NvbiAg
PGNvbGxpbmpAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExBVEZP
Uk0oV0lOKQorI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgorI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShXSU4pIHx8IFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3Jr
Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1
ZUNGTmV0Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNl
dHRpbmdzKCkpOworICAgIGlmICghcHJveHlTZXR0aW5ncykgeworICAgICAgICBtX2lzVXNpbmdQ
cm94eSA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUu
Y29tLyIpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJM
ID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZV
UkwoKTsKKworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9IGFkb3B0
Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94eVNldHRp
bmdzLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheSA9
IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQoKSwgcHJv
eHlTZXR0aW5ncy5nZXQoKSkpOworCisgICAgQ0ZJbmRleCBodHRwUHJveHlDb3VudCA9IENGQXJy
YXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7CisgICAgQ0ZJbmRleCBodHRwc1Byb3h5
Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5LmdldCgpKTsKKyAgICBpZiAo
aHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRp
Y19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwUHJveHlB
cnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKKyAg
ICAgICAgaHR0cFByb3h5Q291bnQgPSAwOworICAgIGlmIChodHRwc1Byb3h5Q291bnQgPT0gMSAm
JiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJyYXkuZ2V0KCksIDApKSwga0NG
UHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAgICAgIGh0dHBzUHJveHlDb3Vu
dCA9IDA7CisKKyAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJv
eHlDb3VudDsKK30KKworc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhv
c3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCit7CisgICAg
RE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8g
SXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUg
c3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgorICAg
IENGUmVsZWFzZSh0aGVIb3N0KTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cGxh
dGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENG
SG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsK
KyAgICBpZiAoIWhvc3QpIHsKKyAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7
IDAsIDAsIDAsIDAsIDAgfTsKKyAgICBDRkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1Jl
ZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4K
KyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRD
YWxsYmFjaywgJmNvbnRleHQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwor
I2lmICFQTEFURk9STShXSU4pCisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRI
b3N0LCBDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisjZWxzZQor
ICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9v
cCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCisgICAgQ0ZI
b3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7CisjZW5kaWYKKyAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9u
KGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDApOworfQorCit2b2lkIEROU1Jlc29sdmVR
dWV1ZUNGTmV0OjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8sIHVpbnQ2NF90
IC8qIGlkZW50aWZpZXIgKi8sIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgLyogY29tcGxldGlvbkhh
bmRsZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZl
UXVldWVDRk5ldDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjcyNWNhNzFjYjc5MGQyOWUyMjQ4NmNiNGFmMmFlNjhkZjc4MjA3OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1
YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0
KCkgPSBkZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1
aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2
b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpIGZpbmFsOworCitwcm90ZWN0ZWQ6
CisgICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2
b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKK307CisKK3VzaW5nIERO
U1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ7CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzMWY1OTg0YzBjZThlZmFlODk4MWQ5M2EyODMwY2Ew
NzFjYTBjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJETlMuaCIKLSNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShDVVJMKQot
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12
b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTIzMWE3NzllYTMyNjk1NjM5NGI1NjE4ZWRhNWRhZjEwMjBlYmU1Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9E
TlNSZXNvbHZlUXVldWVDdXJsLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWVDdXJsLmgiCisKKyNpZiBVU0UoQ1VS
TCkKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZv
cm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZlKGNvbnN0IFN0
cmluZyYgLyogaG9zdG5hbWUgKi8sIHVpbnQ2NF90IC8qIGlkZW50aWZpZXIgKi8sIEROU0NvbXBs
ZXRpb25IYW5kbGVyJiYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZSh1aW50
NjRfdCAvKiBpZGVudGlmaWVyICovKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGNhN2MxMmZjOGRjOTYx
OTUyMjY5NTY3NmFiOTBkNDgyMDM4N2UyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsx
LDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBETlNSZXNvbHZlUXVldWVDdXJsIGZpbmFsIDogcHVibGljIEROU1Jlc29sdmVR
dWV1ZSB7CitwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKyAg
ICB2b2lkIHJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmll
ciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1
aW50NjRfdCBpZGVudGlmaWVyKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRl
SXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29s
dmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0
Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MTVhMDg0Nzg0OGI5YzM1MDI0MDQ5NzdiZGMzYWEyMjQ5YTg3MWZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jl
c29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIKKworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKy8vIEluaXRpYWxseSB0cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNh
YmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0
dHBQcm94eSA9IHRydWU7CitzdGF0aWMgYm9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisK
K3N0YXRpYyBib29sIGRpZFJlc29sdmVQcm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBo
YXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBwcm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhl
IGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QgaXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBj
YXNlKSwgdGhlbiB0aGUgdXNlciBwcmVmZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBz
aW1pbGFyIHRvCisgICAgLy8gcmVzb2x2aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFu
eSBwb3NzaWJpbGl0aWVzIHJldHVybmVkIGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAg
IC8vIGlmIHdlJ3JlIHRyeWluZyB0byBjb25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25l
IGluIG9yZGVyLCBidXQgaGVyZSB3ZSBhcmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3Qs
IG1lcmVseSB0byBkZWNpZGUgd2hldGhlciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAg
cmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYgc3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisK
K3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQcm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBib29sKiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5n
UHJveHkpCit7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQ
dHI8Y2hhcio+IHVyaXMoZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCBy
ZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZM
b2dBbHdheXMoIkVycm9yIGRldGVybWluaW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBl
cnJvci0+bWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1By
b3h5VHlwZSA9IGRpZFJlc29sdmVQcm94eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5
ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBpc1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZv
aWQgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHko
R19QUk9YWV9SRVNPTFZFUihzb3VyY2UpLCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0
aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZl
ZEZvckh0dHBzVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xW
RVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wq
Pih1c2VyRGF0YSkpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNp
bmdQcm94eSgpCit7CisgICAgR1JlZlB0cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAg
Z19vYmplY3RfZ2V0KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHkt
cmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNv
bHZlcik7CisKKyAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQo
KSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVy
aUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3Vw
X2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBw
cm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKwor
c3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxsYmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikK
K3sKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3Vu
dCgpOworfQorCitzdGF0aWMgdm9pZCByZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBB
ZGRyZXNzKiBhZGRyZXNzLCBndWludCBzdGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJU
KGRhdGEpOworICAgIGF1dG8qIHJlc29sdmVRdWV1ZSA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVR
dWV1ZVNvdXAqPihkYXRhKTsKKworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSBHUE9JTlRFUl9U
T19VSU5UKGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGFkZHJlc3MpLCAiaWRlbnRpZmllciIp
KTsKKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSByZXNvbHZlUXVldWUtPmdldENvbXBs
ZXRpb25IYW5kbGVyKGlkZW50aWZpZXIpOworCisgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHN0YXR1cyAhPSBTT1VQX1NUQVRVU19PSykgewor
ICAgICAgICBETlNFcnJvciBlcnJvciA9IEROU0Vycm9yOjpVbmtub3duOworCisgICAgICAgIHN3
aXRjaCAoc3RhdHVzKSB7CisgICAgICAgIGNhc2UgU09VUF9TVEFUVVNfQ0FOVF9SRVNPTFZFOgor
ICAgICAgICAgICAgZXJyb3IgPSBETlNFcnJvcjo6Q2FudFJlc29sdmU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTT1VQX1NUQVRVU19DQU5DRUxMRUQ6CisgICAgICAgICAgICBl
cnJvciA9IEROU0Vycm9yOjpDYW5jZWxsZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBTT1VQX1NUQVRVU19PSzoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9OworCisgICAgICAgICgqY29tcGxldGlvbkhhbmRs
ZXIpKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoIXNvdXBfYWRkcmVzc19pc19yZXNvbHZlZChhZGRyZXNzKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJl
c3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOworICAgIGludCBsZW47CisgICAgYXV0byog
aXBBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihz
b3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRyKGFkZHJlc3MsICZsZW4pKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2l6ZW9mKCppcEFkZHJlc3MpIC8gbGVuOyBpKyspCisgICAgICAgIGFk
ZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKGlwQWRkcmVzc1tpXSkp
OworCisgICAgKCpjb21wbGV0aW9uSGFuZGxlcikoeyBhZGRyZXNzZXMgfSk7CisKKyAgICByZXNv
bHZlUXVldWUtPnJlbW92ZUNhbmNlbEFuZENvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIpOwor
fQorCitjb25zdCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciogRE5TUmVzb2x2ZVF1ZXVl
U291cDo6Z2V0Q29tcGxldGlvbkhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBjb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlcnMgPSBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5maW5kKGlkZW50aWZpZXIpOwor
CisgICAgaWYgKGNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycyA9PSBtX2NvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gJmNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy0+dmFsdWUuZmlyc3Q7Cit9CisKK3ZvaWQg
RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVtb3ZlQ2FuY2VsQW5kQ29tcGxldGlvbkhhbmRsZXIodWlu
dDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
bV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2
b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Np
b25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0
bmFtZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsK
K30KKwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8g
YWRkcmVzcyA9IGFkb3B0R1JlZihzb3VwX2FkZHJlc3NfbmV3KGhvc3RuYW1lLnV0ZjgoKS5kYXRh
KCksIDApKTsKKyAgICBhdXRvIGNhbmNlbGxhYmxlID0gYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVf
bmV3KCkpOworICAgIHNvdXBfYWRkcmVzc19yZXNvbHZlX2FzeW5jKGFkZHJlc3MuZ2V0KCksIHNv
dXBfc2Vzc2lvbl9nZXRfYXN5bmNfY29udGV4dChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9u
KCkuc291cFNlc3Npb24oKSksIGNhbmNlbGxhYmxlLmdldCgpLCByZXNvbHZlZFdpdGhPYnNlcnZl
ckNhbGxiYWNrLCB0aGlzKTsKKworICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGFkZHJl
c3MuZ2V0KCkpLCAiaWRlbnRpZmllciIsIEdVSU5UX1RPX1BPSU5URVIoaWRlbnRpZmllcikpOwor
CisgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuYWRkKGlkZW50aWZpZXIsIGNvbXBs
ZXRpb25BbmRDYW5jZWxIYW5kbGVycyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92
ZShjYW5jZWxsYWJsZSkpKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpzdG9wUmVz
b2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBhdXRvIGNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVyID0gbV9jb21wbGV0aW9uQW5k
Q2FuY2VsSGFuZGxlcnMuZmluZChpZGVudGlmaWVyKTsKKworICAgIGlmIChjb21wbGV0aW9uQW5k
Q2FuY2VsSGFuZGxlciAhPSBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5lbmQoKSkgewor
ICAgICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbChjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlci0+
dmFsdWUuc2Vjb25kLmdldCgpKTsKKyAgICAgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxl
cnMucmVtb3ZlKGlkZW50aWZpZXIpOworICAgIH0KK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVT
b3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1
ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1MDU3NTkwYzJhNGUzODJiOGVmMWJkZmQzMDVhYTllOThm
OWY1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRO
U1Jlc29sdmVRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVz
b2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgor
ICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29sdmUodWludDY0X3QgaWRlbnRpZmll
cikgZmluYWw7CisKKyAgICBjb25zdCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciogZ2V0
Q29tcGxldGlvbkhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmVD
YW5jZWxBbmRDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6Cisg
ICAgdXNpbmcgY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzID0gc3RkOjpwYWlyPFdlYkNvcmU6
OkROU0NvbXBsZXRpb25IYW5kbGVyLCBHUmVmUHRyPEdDYW5jZWxsYWJsZT4+OworCisgICAgSGFz
aE1hcDx1aW50NjRfdCwgY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzPiBtX2NvbXBsZXRpb25B
bmRDYW5jZWxIYW5kbGVyczsKKworICAgIHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOworfTsKKwordXNpbmcgRE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNv
bHZlUXVldWVTb3VwOworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TU291cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMTE0NTdk
ZGQyMjMzYzc0M2ExOGNkZjgzODM2OTBmZjhmNjM5NTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1NvdXAuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpZiBV
U0UoU09VUCkKLQotI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgotI2luY2x1ZGUg
IlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgotI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0v
LyBJbml0aWFsbHkgdHJ1ZSB0byBlbnN1cmUgcHJlZmV0Y2ggc3RheXMgZGlzYWJsZWQgdW50aWwg
d2UgaGF2ZSBwcm94eSBzZXR0aW5ncy4KLXN0YXRpYyBib29sIGlzVXNpbmdIdHRwUHJveHkgPSB0
cnVlOwotc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBzUHJveHkgPSB0cnVlOwotCi1zdGF0aWMgYm9v
bCBkaWRSZXNvbHZlUHJveHkoY2hhcioqIHVyaXMpCi17Ci0gICAgLy8gV2UgaGF2ZSBhIGxpc3Qg
b2YgcG9zc2libGUgcHJveGllcyB0byB1c2UgZm9yIHRoZSBVUkkuIElmIHRoZSBmaXJzdCBpdGVt
IGluIHRoZSBsaXN0IGlzCi0gICAgLy8gZGlyZWN0Oi8vICh0aGUgdXN1YWwgY2FzZSksIHRoZW4g
dGhlIHVzZXIgcHJlZmVycyBub3QgdG8gdXNlIGEgcHJveHkuIFRoaXMgaXMgc2ltaWxhciB0bwot
ICAgIC8vIHJlc29sdmluZyBob3N0bmFtZXM6IHRoZXJlIGNvdWxkIGJlIG1hbnkgcG9zc2liaWxp
dGllcyByZXR1cm5lZCBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLCBhbmQKLSAgICAvLyBpZiB3ZSdy
ZSB0cnlpbmcgdG8gY29ubmVjdCB3ZSBzaG91bGQgYXR0ZW1wdCBlYWNoIG9uZSBpbiBvcmRlciwg
YnV0IGhlcmUgd2UgYXJlIG5vdCB0cnlpbmcKLSAgICAvLyB0byBjb25uZWN0LCBtZXJlbHkgdG8g
ZGVjaWRlIHdoZXRoZXIgYSBwcm94eSAic2hvdWxkIiBiZSB1c2VkLgotICAgIHJldHVybiB1cmlz
ICYmICp1cmlzICYmIHN0cmNtcCgqdXJpcywgImRpcmVjdDovLyIpOwotfQotCi1zdGF0aWMgdm9p
ZCBkaWRSZXNvbHZlUHJveHkoR1Byb3h5UmVzb2x2ZXIqIHJlc29sdmVyLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgYm9vbCogaXNVc2luZ1Byb3h5VHlwZSwgYm9vbCogaXNVc2luZ1Byb3h5KQotewot
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBHVW5pcXVlUHRyPGNoYXIqPiB1
cmlzKGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2ZpbmlzaChyZXNvbHZlciwgcmVzdWx0LCAmZXJy
b3Iub3V0UHRyKCkpKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJF
cnJvciBkZXRlcm1pbmluZyBzeXN0ZW0gcHJveHkgc2V0dGluZ3M6ICVzIiwgZXJyb3ItPm1lc3Nh
Z2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgKmlzVXNpbmdQcm94eVR5cGUgPSBk
aWRSZXNvbHZlUHJveHkodXJpcy5nZXQoKSk7Ci0gICAgKmlzVXNpbmdQcm94eSA9IGlzVXNpbmdI
dHRwUHJveHkgfHwgaXNVc2luZ0h0dHBzUHJveHk7Ci19Ci0KLXN0YXRpYyB2b2lkIHByb3h5UmVz
b2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVT
T0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNVc2luZ0h0dHBQcm94eSwgc3RhdGljX2Nhc3Q8Ym9v
bCo+KHVzZXJEYXRhKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1Vy
aUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVz
ZXJEYXRhKQotewotICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSks
IHJlc3VsdCwgJmlzVXNpbmdIdHRwc1Byb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0g
ICAgR1JlZlB0cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7Ci0gICAgZ19vYmplY3RfZ2V0KE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVT
b3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVz
b2x2ZXIub3V0UHRyKCksIG51bGxwdHIpOwotICAgIEFTU0VSVChyZXNvbHZlcik7Ci0KLSAgICBn
X3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9p
c1VzaW5nUHJveHkpOwotICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVy
LmdldCgpLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9y
SHR0cHNVcmlDYWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKLX0KLQotc3RhdGljIHZvaWQgcmVz
b2x2ZWRDYWxsYmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKLXsKLSAgICBETlNSZXNv
bHZlUXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwotfQotCi12b2lk
IEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
Ci17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHNvdXBfc2Vzc2lvbl9wcmVm
ZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5n
ZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0
ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOwotfQotCi12
b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Ci19
Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAppbmRleCBhNTIwNDA0NWRjNzIxM2Ey
ZjAxZjJhMTQwN2MwZjBiY2NmMjM3MjEyLi4yZmYxZTY5ZGVhOWYwMTVlNDMyNjc2N2FiMjEwZDc2
ZTgzYjgyOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKQEAgLTQwLDYgKzQwLDEwIEBACiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29h
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBjcmVhdGVUaHJlYWQoKQpAQCAtMTYyLDE1ICsxNjYsMjIg
QEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmRpZFJlY2VpdmVOZXR3b3JrUlRDU29ja2V0TWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KICAgICBOZXR3b3JrUlRDU29ja2V0KGRlY29kZXIu
ZGVzdGluYXRpb25JRCgpLCAqdGhpcykuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKwogdm9pZCBOZXR3b3JrUlRDUHJvdmlk
ZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRk
cmVzcykKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRD
UmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlmaWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nl
c09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgIGF1dG8gcmVzb2x2ZXIgPSBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgaWRlbnRpZmllcl0oV2ViQ29y
ZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
cmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0gICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0g
TmV0d29ya1JUQ1Jlc29sdmVyOjpFcnJvcjo6Q2FuY2VsbGVkKQorICAgICAgICAgICAgaWYgKHJl
c3VsdC5lcnJvcigpICE9IFdlYkNvcmU6OkROU0Vycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAg
ICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVz
b2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52
YWx1ZSgpKSwgaWRlbnRpZmllcik7CisKKyAgICAgICAgYXV0byBhZGRyZXNzZXMgPSBXVEY6Om1h
cChyZXN1bHQudmFsdWUoKS5nZXQoKSwgW10gKGF1dG8mIGFkZHJlc3MpIHsKKyAgICAgICAgICAg
IHJldHVybiBSVENOZXR3b3JrOjpJUEFkZHJlc3MgeyBydGM6OklQQWRkcmVzcyB7IGFkZHJlc3Mu
Z2V0U2luQWRkcigpIH0gfTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRk
cmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3Rh
cnQoYWRkcmVzcyk7CiAgICAgbV9yZXNvbHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVz
b2x2ZXIpKTsKQEAgLTE4Miw2ICsxOTMsMzQgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OnN0
b3BSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyKQogICAgICAgICByZXNvbHZlci0+c3RvcCgp
OwogfQogCisjZWxzZQorCit2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIo
dWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgaWRlbnRpZmllcl0oV2ViQ29yZTo6RE5TQWRkcmVz
c2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192
YWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5T
RXJyb3I6OkNhbmNlbGxlZCkKKyAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3Io
MSksIGlkZW50aWZpZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgYXV0byBhZGRyZXNzZXMgPSBXVEY6Om1hcChyZXN1bHQudmFsdWUoKS5nZXQoKSwgW10gKGF1
dG8mIGFkZHJlc3MpIHsKKyAgICAgICAgICAgIHJldHVybiBSVENOZXR3b3JrOjpJUEFkZHJlc3Mg
eyBydGM6OklQQWRkcmVzcyB7IGFkZHJlc3MuZ2V0U2luQWRkcigpIH0gfTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2Vi
UlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVyKTsK
KyAgICB9OworCisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBpZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVy
OjpzdG9wUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBXZWJDb3JlOjpzdG9w
UmVzb2x2ZUROUyhpZGVudGlmaWVyKTsKK30KKworI2VuZGlmCisKIHZvaWQgTmV0d29ya1JUQ1By
b3ZpZGVyOjpjbG9zZUxpc3RlbmluZ1NvY2tldHMoRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghbV9pc0xpc3RlbmluZ1NvY2tldEF1dGhvcml6ZWQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2
YzNmZjAxNmUuLjFiZmFmYTQ2YjcyMGMzYzIyMTNhNzExY2M3YmRjNjZkMWFiNzcxNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIsNjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1zdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdElu
Zm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykK
Ky8vIEZJWE1FOiBVc2UgdGhlIGZ1bmN0aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS4KKyNpZiAhUExBVEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya1JUQ1Jlc29sdmVyPiBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIEFTU0VSVF9VTlVTRUQodHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAo
ZXJyb3ItPmRvbWFpbikgewotICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVy
ZSwgYnV0IGluZm8gaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0
YXRpY19jYXN0PE5ldHdvcmtSVENSZXNvbHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1
bHQ7Ci0gICAgQ0ZBcnJheVJlZiByZXNvbHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9z
dEdldEFkZHJlc3NpbmcoaG9zdFJlZiwgJnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7Ci0KLSAgICBzaXplX3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2
ZWRBZGRyZXNzZXMpOwotICAgIFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3Nl
czsKLSAgICBhZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAg
Q0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2
ZWRBZGRyZXNzZXMsIGluZGV4KTsKLSAgICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7
Ci0gICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNz
KHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3MtPnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZl
ci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrUlRDUmVzb2x2ZXI+KG5ldyBOZXR3b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6
Ok5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQotICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
K05ldHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6
fk5ldHdvcmtSVENSZXNvbHZlcigpCiB7Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29w
KG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUpOwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIp
OwogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25I
YW5kbGVyKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6
OlVua25vd24pKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2Vi
Q29yZTo6RE5TRXJyb3I6OlVua25vd24pKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6
OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENG
SG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSkpOwotICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwg
dGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudCht
X2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxl
V2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7Ci0gICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNv
bHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRy
ZXNzLCBtX2lkZW50aWZpZXIsIG1fY29tcGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE5ldHdv
cmtSVENSZXNvbHZlcjo6c3RvcCgpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24o
bV9ob3N0LmdldCgpLCBDRkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYg
KGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVk
KSk7Ci19Ci0KLXZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9y
PFJUQ05ldHdvcms6OklQQWRkcmVzcz4mIGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgYWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZl
RE5TKG1faWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2
ZXIuaAppbmRleCAxYmNmNzM2ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1
Zjc2MjcyYzU4MDJiY2IwM2VhYjczNjQxODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApA
QCAtMjgsNyArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3
b3JrLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RE5TLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgTmV0d29ya1JUQ1Jlc29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNz
IEVycm9yIHsgVW5rbm93biwgQ2FuY2VsbGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrUlRDUmVzb2x2ZXI+IGNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3Ig
PSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3Jr
OjpJUEFkZHJlc3M+PiwgRXJyb3I+OwotICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdv
cmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9u
SGFuZGxlciYmKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4
cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0
d29ya1JUQ1Jlc29sdmVyKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYg
YWRkcmVzcyk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29u
c3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxl
dGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0g
ICAgQ29tcGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8
Q0ZIb3N0UmVmPiBtX2hvc3Q7Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVy
OworICAgIFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MWZkYjU1NTI3OWViZTBiMjIxNzFlNTJlYzAwNzE2NTk4YjE1OTk1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgi
CisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhv
c3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJv
ciwgdm9pZCAqaW5mbykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8p
OworCisgICAgQVNTRVJUKGluZm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EqPihpbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWlu
KSB7CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBp
cyBub3QgcHJvdmlkZWQgaW4gdGhlIGNhbGxiYWNrLgorICAgICAgICByZXNvbHZlci0+Y29tcGxl
dGVkKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkROU0Vycm9yOjpVbmtub3duKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJl
c29sdmVkQWRkcmVzc2VzID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVm
LCAmcmVzdWx0KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNp
emVfdCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVj
dG9yPFdlYkNvcmU6OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGNvdW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBjb3VudDsgKytpbmRleCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFS
ZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAg
ICAgICBhdXRvKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2Fk
ZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hl
Y2tlZEFwcGVuZChXZWJDb3JlOjpJUEFkZHJlc3MoKmFkZHJlc3MpKTsKKyAgICB9CisgICAgcmVz
b2x2ZXItPmNvbXBsZXRlZCh7IGFkZHJlc3NlcyB9KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtSVENSZXNvbHZlcj4gTmV0d29ya1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3QgaWRl
bnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4obmV3
IE5ldHdvcmtSVENSZXNvbHZlckNvY29hKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKSk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50aWZp
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVk
dWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0
KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENy
ZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hvc3Qu
Z2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1
bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZh
dWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9u
KG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6
OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwg
Q0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCkp
OworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpjb21wbGV0ZWQoV2ViQ29yZTo6
RE5TQWRkcmVzc2VzT3JFcnJvciYmIGFkZHJlc3Nlc09yRXJyb3IpCit7CisgICAgaWYgKGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFkZHJlc3Nlc09yRXJyb3IpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg0MTk4ZDE2YTAxMmY0MWIzYTFhYzdlN2E1ZWFh
ZTNiM2NkYjQwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUg
Ik5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIHdoZW4g
d2UgY29tcGxldGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlNSZXNvbHZlUXVldWVDRk5l
dC4KK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtS
VENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0
KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisK
KyAgICB2b2lkIGNvbXBsZXRlZChXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYpOworCitw
cml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE4YTkxOGZiMmNhYzg0
ZTVmYTRiNWUyZDcyOWYxNmM3YjZkYTFiZWQuLjhhYzU2YTBkMTA1ZWE5MDdjMjNkYjJmNzhkZDMx
ZTM1YThiNmM3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtOTE1LDYgKzkxNSw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYwMDZE
MCAvKiBSVENOZXR3b3JrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLzsg
fTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUwMEYw
MDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAv
KiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNv
bHZlci5jcHAgKi87IH07CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRDTmV0
d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEx
QjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDEz
MDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAwMzlF
QzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMwMDAz
OUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtS
VENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMyODcsNiArMzI4OCw4IEBACiAJCTQxMDQ4MkNDMURE
RDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1
NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRoID0g
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jl
c29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4
NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jl
c29sdmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2MjFF
MzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk4
MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7IHBh
dGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjIzNiw2ICs2MjM5LDggQEAKIAkJCQk0MURDNDU5ODFFM0Q2
RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTQx
MTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAogCQkJ
CTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywKKwkJ
CQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3Bw
ICovLAorCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5oICovLAogCQkJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29j
a2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1Nv
Y2tldC5oICovLAogCQkJCTQxMzA3NTlEMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29j
a2V0Lm1lc3NhZ2VzLmluICovLApAQCAtMTA2MjEsNiArMTA2MjYsNyBAQAogCQkJCTQxREM0NTk3
MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4
NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJCNTU1
MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0d29y
a1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgyODNB
QzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZWY3OGY2YTk5ZjNjN2JlZTRmMWM1NDY3MjM2MTY2MmNkZDFkMjViMS4uOTc2YTcyNDY4N2E3
YTIxNjlmMzE1ZTYxNjc2YTE3ZjYxNTMwY2JjMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAyLTE5ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB1bml0IHRlc3RzIGZvciBoZSByZXNvbHZlIGFu
ZCBzdG9wUmVzb2x2ZSBmdW5jdGlvbnMuIFdlIG5lZWQgdG8gY29tcGlsZSB0aGVtIGZvciB0aGUK
KyAgICAgICAgb3RoZXIgcGxhdGZvcm1zIHdoZW4gdGhlIEFQSXMgYXJlIHN1cHBvcnRlZC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHA6CisKIDIwMTgtMDMtMDYgIERvbWluaWsg
SW5mdWVociAgPGRpbmZ1ZWhyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0FSTV0gRGlzYWJsZSB0
ZXN0cyB0aGF0IHJ1biBvdXQgb2YgbWVtb3J5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA0YWVmNjk1M2NkMTYxNGJmNmNmMDNjZTIyNDhhZmIzYzZkMmRlNWY4Li42MjAy
ZjQ2YmFmMGIzMzc4NWM4NWNhZDcyYzZiMjgzM2JlODg3ZDQzIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
UGxhdGZvcm1HVEsuY21ha2UKQEAgLTg3LDYgKzg3LDcgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdl
YkNvcmUKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9DU1NQYXJzZXIuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9ETlMuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9HcmlkUG9zaXRpb24uY3BwCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYjdlNTkzMDMyZjA4
M2FjZTQ5ZTJlYTM2ZmEyZGJmNWU1ZGQ4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ROUy5o
PgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9FeHBl
Y3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2Jvb2wgZG9uZSA9IGZhbHNlOwor
CitURVNUKEROU1Rlc3QsIGNhbmNlbFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlh
bGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmco
Ind3dy53ZWJraXQub3JnIik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBE
TlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0Fk
ZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsK
KworICAgICAgICBBU1NFUlRfRkFMU0UocmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUocmVzdWx0LmVycm9yKCkgPT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCk7
CisKKyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVz
b2x2ZUROUyhob3N0bmFtZSwgaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIHN0b3BSZXNvbHZlRE5TKGlkZW50aWZpZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7
Cit9CisKK1RFU1QoRE5TVGVzdCwgY2FudFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5p
dGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJp
bmcoIm5vdGF2YWxpZGRvbWFpbi5ub3RhdmFsaWRkb21haW4iKTsKKyAgICB1aW50NjRfdCBpZGVu
dGlmaWVyID0gMTsKKworICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVy
ID0gW10oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3Zh
bHVlKCkpOworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpE
TlNFcnJvcjo6Q2FudFJlc29sdmUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAg
ZG9uZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNU
KEROU1Rlc3QsIHJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5M
b29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53ZWJraXQu
b3JnIik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9u
SGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJy
b3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBB
U1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworCisgICAgICAgIHJldHVybjsKKyAgICB9
OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZp
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335094</attachid>
            <date>2018-03-06 06:58:22 -0800</date>
            <delta_ts>2018-03-06 07:05:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180306155820.patch</filename>
            <type>text/plain</type>
            <size>83515</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM0ZjI5MDk3OGQyMzE2
MmNkZWVmYjdlODYzNjZhMjNjYTQ2NjRjNC4uZDA3MTc3MzdkODgwYzg3MzNiOWM4ODZlODdkZGE3
NDIyMzM4ODdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyIGZvciBDT0NPQSBjb2RlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVDRjo6cmVzb2x2ZSk6IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmg6IEFk
ZCB0aGUgbmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cmVzb2x2ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oOiBO
ZXcgY2xhc3MgaW5oZXJpdGluZyBmcm9tIHRoZSBETlNSZXNvbHZlUXVldWUgY2xhc3MsIGFkZGlu
ZworICAgICAgICBhIEhhc01hcCB3aXRoIHRoZSBhY3RpdmUgb3BlcmF0aW9ucywgaXQgYWxsb3dz
IHN0b3BwaW5nIHRoZW0uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29s
dmVRdWV1ZVNvdXAuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU1NvdXAuY3BwLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjayk6IENhbGxlZCB3aGVuIHRoZSByZXN1bHQgYWRkcmVzcyBmcm9tIHRoZSBz
b3VwIHBsYXRmb3JtIGlzIHJlYWR5LAorICAgICAgICBzZW5kcyB0aGUgYWRkcmVzcyB0byB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291
cDo6cmVzb2x2ZSk6IExhdW5jaCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gd2l0aCB0aGUgc291cCBs
aWJyYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBwcm9jZXNzIHdpdGggYSBHQ2FuY2Vs
bGFibGUuCisKIDIwMTgtMDMtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBSZW1vdmUgdW51c2VkIHNjcm9sbGluZy1yZWxh
dGVkIGNvZGUgaW4gVGV4dHVyZU1hcHBlckxheWVyLCBDb29yZGluYXRlZEdyYXBoaWNzIHN0YWNr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDg0MTNmODc5YTMyNTQyM2U2MDBiYzJhZGM0NDVkN2EyYzZiODNmNTYuLjQz
YTVkOTkxNjM1ZWI0Y2EzZjJjY2M4MzRiN2FlMmMyZTY0OGM0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTgtMDItMDggIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5j
b20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgc3Bl
Y2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0ZSB0aGUgZ2VuZXJpYyBjb2RlIGluIHRoZSBiYXNl
IGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHBvcnQKKyAgICAgICAgYWdub3N0
aWMgYW5kIGRlcGVuZGVudCBvbiBETlMgQVBJIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnkgd2hp
Y2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRhaWxzLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBh
biBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRo
ZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVS
ZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBB
ZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2Vi
cnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBE
TlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBp
biB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZpZXIg
b2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50aWZp
ZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVz
b2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmlj
IGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBBZGQg
YSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAgICAg
ICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBBdm9p
ZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBjbGFz
c2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFtZSBy
ZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTog
TWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNv
bHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAg
ICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2RzIHRo
YXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1ldGhv
ZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2luZyBz
dXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3JtIGRp
cmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMy0wNiAg
TXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIEltcGxlbWVudCBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggZWU3YjQwNzIwZjBk
OGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJkN2E3MTM5OWRlZWZkYzky
NTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01
MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3Rv
cmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggM2U4
NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1MjBhYjBmY2UwZGY0ODMy
Zjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTQx
Myw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQogCi0gICAgcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggMjNhOTQwMzRlYTkzNDQzOTNmOTlkMDRhMTkyODJlYjFjODY1
NmQ1Yy4uNzg4Y2ZkYjQ0NjY4NTNmMmJmZjMzZGY2MjJhZGQ4MzIyOGM3MjRjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE3MDcsNiArMTcwNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAK
K3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg1NDliZTM0MTM2
NzJhMDk2ZWFlMjI3ZjlhNmRhZmM0NDNjNjEyY2IuLjViZTI1NWJjZTQyZjBlY2ExNDNiOGI3MzNk
MzJjMDIzNTU4OGVlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDgyLDcgKzQ4Miw3
IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKIHBsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCiAKLXBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogcGxhdGZv
cm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OGM4ZDFmODAzN2ZiODkwYjMzNGI3
ZTAwYTRkOTgwZGMyN2EzY2YwLi41M2VlYzJiMDI2M2FiMDJkZTAyYjAwYzcwNWJhNzQ1ZmRlZTk1
NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMjU1LDYgKzIyNTUsNyBAQAogCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1
QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3RUU2ODQ2RjEyRDI2RTM4MDBF
NzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNv
bHZlUXVldWVDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAv
KiBKU0ZldGNoQm9keS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0Y0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggKi87IH07CiAJ
CTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Y0Qzk2RDkxQUQ0NDgz
NTAwMzY1QTUxIC8qIEpTUmVhZGFibGVTdHJlYW1TaW5rLmggKi87IH07CkBAIC05NjA0LDYgKzk2
MDUsNyBAQAogCQk3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0VFNjg0NUMxMkQyNkUzODAwRkY5NDE1IC8qIERO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERO
U1Jlc29sdmVRdWV1ZUNGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4
NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hCb2R5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUxIC8qIEpT
UmVhZGFibGVTdHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUmVhZGFibGVTdHJlYW1TaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEyMTI1LDggKzEyMTI3LDkgQEAKIAkJQjJFNEVDOTUwRDAwQzIyQjAwNDMyNjQzIC8qIFNW
R1pvb21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHWm9vbUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRTRFQzk2MEQwMEMyMkIwMDQz
MjY0MyAvKiBTVkdab29tRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdab29t
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkVEOTc3MDBCMUY1NUNF
MDAyNTdEMEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMkYzNEZFODBFODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RTBBQjc1
QTZFMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RjBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNTAwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlZEFuZ2xl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzIxLDYgKzE4NzI0LDcgQEAK
IAkJCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCAqLywK
IAkJCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuY3BwICovLAog
CQkJCUU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oICovLAorCQkJ
CTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovLAogCQkJCUIyRjM0RkU1MEU4
MkY4MTQwMEY2MjdDRCAvKiBETlMuaCAqLywKIAkJCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUg
LyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLywKIAkJCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAg
LyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8sCkBAIC0yMzQ0Nyw3ICsyMzQ1MSw4IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQk3RUU2ODQ0RTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCAqLywKIAkJCQk1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNh
dGVJbmZvLmggKi8sCi0JCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNw
cCAqLywKKwkJCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovLAorCQkJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVl
dWVDRk5ldC5oICovLAogCQkJCTdFRTY4NDUzMTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovLAogCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCkBAIC0yNzMxMSw2ICsyNzMxNiw3IEBACiAJ
CQkJRkQzMTYwOTExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NDczMEQ3NzEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkYzNEZFNjBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZEOSAvKiBE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNCQjU5RjQxNDU3QTQwRDAwQUM1NkZFIC8q
IERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGM0QwOTc2NTc2
NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKaW5kZXggNGE4MmViMDk5ZjVmMjcyMGNiZTNkMjVkMzY5MTAzNWI1
NmMwYmNmOC4uNDgwNjBiODUzYmVjYzlkYmIxOTNlYzZiYzg5MjhhNzRjMzg5YWU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCkBAIC0yMSw3ICsyMSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAotICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JD
dXJsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAu
dHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CmluZGV4IDhlNDdk
NjJhMzg2MzEyNzIyNmVlZDk0NzFiM2QzMjg2YzFiMjk3OTUuLmQ2NGZjZmJlYTI4MTQ3ZGFkZjQz
MGIyZmZiNGMwZmVhNjBiOTVkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKQEAgLTI3LDcgKzI3LDcgQEAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9D
cmVkZW50aWFsU3RvcmFnZVNvdXAuY3BwCi1wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5j
cHAKK3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlT
ZXJ2ZXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxMTIyZGIzZDg2N2ViZTZkYzA3MjkyMTIwZmVlOTc2ZTIzODI1MzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TLmgiCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhv
c3RuYW1lKTsKK30KKwordm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZUROUyh1aW50NjRfdCBpZGVudGlm
aWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuc3RvcFJl
c29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
Uy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAzYzUzNzE3NWU2MmMuLmYwN2Fj
YjUxZDY1ZGIwMGMxNTBkZjQwMTY1MGQ2MTg2ZWIyNWY5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFnbWEgb25jZQorCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2luY2x1ZGUg
PG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDx3aW5zb2NrMi5o
PgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7CitwdWJsaWM6CisgICAgSVBB
ZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisgICAg
ICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IGluX2Fk
ZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2luX2FkZHI7IH07CisKK3ByaXZh
dGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKK2VudW0gY2xhc3Mg
RE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2VsbGVkIH07CisKK3VzaW5nIERO
U0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNpbmcgRE5TQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5TQWRkcmVzc2VzT3JFcnJvciYm
KT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwog
Ci0jZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RE5TUmVzb2x2ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAppbmRleCBmZTNkOGM5MjUzYzA5MjJkYzBkZjU1ODU1M2Q2MjVmYTc2
NGVlZDE2Li44MDE3NzI2OTJlMmVlM2MwM2M2YzliOTU5NTlkZjFmZjU1NTExODg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3Bw
CkBAIC0yNyw2ICsyNywxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
U291cC5oIgorI2VsaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5o
IgorI2VsaWYgVVNFKENGKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZW5k
aWYKKwogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01MSw3ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHJlc29sdmluZ1JldHJ5
RGVsYXkgeyAxMDBfbXMgfTsKIAogRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNp
bmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT4g
cXVldWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZVBsYXRmb3Jt
PiBxdWV1ZTsKIAogICAgIHJldHVybiBxdWV1ZTsKIH0KQEAgLTU5LDcgKzY3LDYgQEAgRE5TUmVz
b2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiBETlNSZXNvbHZlUXVldWU6
OkROU1Jlc29sdmVRdWV1ZSgpCiAgICAgOiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2ZVF1ZXVl
Ojp0aW1lckZpcmVkKQogICAgICwgbV9yZXF1ZXN0c0luRmxpZ2h0KDApCi0gICAgLCBtX2lzVXNp
bmdQcm94eSh0cnVlKQogewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5p
dGlhbCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgogICAgIC8vIHBsYXRmb3Jt
cyB0aGF0IGhhdmUgYW4gYXN5bmNocm9ub3VzIGltcGxlbWVudGF0aW9uIG9mIHVwZGF0ZUlzVXNp
bmdQcm94eSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oCmluZGV4IDA3YjhmZGNiNjJmZmZlNTY0NWY5MDA3ZTJmNDE4MDUwZTlmODExYjgu
LjNhYjk3YjEwMWM2ODNhNmQ0OTRhZmE0MmM1Y2VkZTBkYWM3NGMyZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjcsNiAr
MjcsNyBAQAogI2lmbmRlZiBETlNSZXNvbHZlUXVldWVfaAogI2RlZmluZSBETlNSZXNvbHZlUXVl
dWVfaAogCisjaW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxh
dG9taWM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFz
cyBETlNSZXNvbHZlUXVldWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZl
UXVldWU+OwogCiBwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+
RE5TUmVzb2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1
ZSYgc2luZ2xldG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpID0g
MDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVzdHNJbkZsaWdodDsK
ICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoK
ICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHko
KTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG1f
aXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShj
b25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBt
X3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAgc3RkOjphdG9taWM8
aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQcm94eTsKICAgICBN
b25vdG9uaWNUaW1lIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OWE1N2Q5ZDgyMGVkMTNiMDAyZmQxY2QyZDdjODZl
OGUzNzIwMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsaW4g
SmFja3NvbiAgPGNvbGxpbmpAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUg
IkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVGltZXIu
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLSNpZiBQTEFURk9STShJT1Mp
Ci0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShXSU4pCi0jaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGTmV0d29yay5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBETlNS
ZXNvbHZlUXVldWU6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVBy
b3h5U2V0dGluZ3MoKSk7Ci0gICAgaWYgKCFwcm94eVNldHRpbmdzKSB7Ci0gICAgICAgIG1faXNV
c2luZ1Byb3h5ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhh
bXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBz
Q0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVh
dGVDRlVSTCgpOwotCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0g
YWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5
U2V0dGluZ3MuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFy
cmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgp
LCBwcm94eVNldHRpbmdzLmdldCgpKSk7Ci0KLSAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGh0dHBQcm94eUFycmF5LmdldCgpKTsKLSAgICBDRkluZGV4IGh0dHBz
UHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOwotICAg
IGlmIChodHRwUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQ
cm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUp
KQotICAgICAgICBodHRwUHJveHlDb3VudCA9IDA7Ci0gICAgaWYgKGh0dHBzUHJveHlDb3VudCA9
PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkp
LCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cHNQcm94
eUNvdW50ID0gMDsKLQotICAgIG1faXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0
cHNQcm94eUNvdW50OwotfQotCi1zdGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYg
dGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKLXsK
LSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgp
OyAvLyBJdCdzIG9rIHRvIGNhbGwgc2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQs
IHRoZSBzdGF0aWMgdmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cu
Ci0gICAgQ0ZSZWxlYXNlKHRoZUhvc3QpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxh
dGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLQotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENG
SG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsK
LSAgICBpZiAoIWhvc3QpIHsKLSAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7
IDAsIDAsIDAsIDAsIDAgfTsKLSAgICBDRkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1Jl
ZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4K
LSAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRD
YWxsYmFjaywgJmNvbnRleHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwot
I2lmICFQTEFURk9STShXSU4pCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRI
b3N0LCBDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0jZWxzZQot
ICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9v
cCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCi0gICAgQ0ZI
b3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7Ci0jZW5kaWYKLSAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9u
KGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDApOwotfQotCi12b2lkIHByZWZldGNoRE5T
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZGFlZTY4OTQyMjAzN2U3Nzg0ZGQ4N2E3OTY4NzY0OWY1
ZmQ2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsaW4gSmFja3NvbiAgPGNvbGxpbmpAd2Via2l0Lm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkxvYWRl
clJ1bkxvb3BDRi5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKElP
UykKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0Ojp1cGRhdGVJc1VzaW5nUHJv
eHkoKQoreworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBh
ZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOworICAgIGlmICghcHJv
eHlTZXR0aW5ncykgeworICAgICAgICBtX2lzVXNpbmdQcm94eSA9IGZhbHNlOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwo
UGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Cisg
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywg
Imh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKworICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNG
b3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisgICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVBy
b3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworCisg
ICAgQ0ZJbmRleCBodHRwUHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJh
eS5nZXQoKSk7CisgICAgQ0ZJbmRleCBodHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQo
aHR0cHNQcm94eUFycmF5LmdldCgpKTsKKyAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBD
RkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4o
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94
eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cFByb3h5Q291bnQgPSAw
OworICAgIGlmIChodHRwc1Byb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdl
dFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRl
eChodHRwc1Byb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlU
eXBlTm9uZSkpCisgICAgICAgIGh0dHBzUHJveHlDb3VudCA9IDA7CisKKyAgICBtX2lzVXNpbmdQ
cm94eSA9IGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKK30KKworc3RhdGljIHZv
aWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25z
dCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0
b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRv
bigpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJl
YWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgorICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFJldGFp
blB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhv
c3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBpZiAoIWhvc3QpIHsKKyAgICAg
ICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAgfTsKKyAgICBD
Rkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJl
IHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KKyAgICBCb29sZWFuIHJlc3VsdCA9IENG
SG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRleHQpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworI2lmICFQTEFURk9STShXSU4pCisgICAg
Q0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BHZXRNYWluKCks
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisjZWxzZQorICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1
biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50
Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChs
ZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisjZW5k
aWYKKyAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRy
ZXNzZXMsIDApOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpyZXNvbHZlKGNvbnN0
IFN0cmluZyYgLyogaG9zdG5hbWUgKi8sIHVpbnQ2NF90IC8qIGlkZW50aWZpZXIgKi8sIEROU0Nv
bXBsZXRpb25IYW5kbGVyJiYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29sdmUo
dWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jl
c29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcyNWNhNzFjYjc5MGQyOWUyMjQ4NmNi
NGFmMmFlNjhkZjc4MjA3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgewor
cHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZvaWQg
cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlND
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90
IGlkZW50aWZpZXIpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJc1VzaW5n
UHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0g
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWEzMWY1OTg0YzBjZThlZmFlODk4MWQ5M2EyODMwY2EwNzFjYTBjNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShDVVJMKQotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBk
YXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERO
U1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUg
Ki8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIzMWE3Nzll
YTMyNjk1NjM5NGI1NjE4ZWRhNWRhZjEwMjBlYmU1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDdXJsLmgiCisKKyNpZiBVU0UoQ1VSTCkKKworI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVD
dXJsOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYg
LyogaG9zdG5hbWUgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNS
ZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8sIHVp
bnQ2NF90IC8qIGlkZW50aWZpZXIgKi8sIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgLyogY29tcGxl
dGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNS
ZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZSh1aW50NjRfdCAvKiBpZGVudGlmaWVyICovKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yOGNhN2MxMmZjOGRjOTYxOTUyMjY5NTY3NmFiOTBkNDgyMDM4N2Uy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVl
dWVDdXJsIGZpbmFsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5T
UmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1
cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTVhMDg0Nzg0OGI5
YzM1MDI0MDQ5NzdiZGMzYWEyMjQ5YTg3MWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0w
LDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIK
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluaXRpYWxseSB0
cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5
IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7CitzdGF0aWMg
Ym9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisKK3N0YXRpYyBib29sIGRpZFJlc29sdmVQ
cm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBw
cm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3Qg
aXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVm
ZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgLy8gcmVzb2x2
aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVk
IGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBj
b25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBh
cmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhl
ciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYg
c3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQ
cm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29s
KiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9y
ZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWlu
aW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94
eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBp
c1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09i
amVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNV
c2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgR1JlZlB0
cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0
UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNvbHZlcik7CisKKyAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlD
YWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworfQorCitzdGF0aWMgdm9pZCBy
ZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBz
dGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIHJlc29s
dmVRdWV1ZSA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVRdWV1ZVNvdXAqPihkYXRhKTsKKworICAg
IHVpbnQ2NF90IGlkZW50aWZpZXIgPSBHUE9JTlRFUl9UT19VSU5UKGdfb2JqZWN0X2dldF9kYXRh
KEdfT0JKRUNUKGFkZHJlc3MpLCAiaWRlbnRpZmllciIpKTsKKworICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSByZXNvbHZlUXVldWUtPmdldENvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIp
OworCisgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKHN0YXR1cyAhPSBTT1VQX1NUQVRVU19PSykgeworICAgICAgICBETlNFcnJvciBlcnJvciA9
IEROU0Vycm9yOjpVbmtub3duOworCisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAg
IGNhc2UgU09VUF9TVEFUVVNfQ0FOVF9SRVNPTFZFOgorICAgICAgICAgICAgZXJyb3IgPSBETlNF
cnJvcjo6Q2FudFJlc29sdmU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTT1VQ
X1NUQVRVU19DQU5DRUxMRUQ6CisgICAgICAgICAgICBlcnJvciA9IEROU0Vycm9yOjpDYW5jZWxs
ZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTT1VQX1NUQVRVU19PSzoKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9OworCisgICAgICAgICgqY29tcGxldGlvbkhhbmRsZXIpKG1ha2VVbmV4cGVjdGVkKGVycm9y
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNvdXBfYWRkcmVzc19pc19y
ZXNvbHZlZChhZGRyZXNzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFdlYkNvcmU6
OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KDEpOworICAgIGludCBsZW47CisgICAgYXV0byogaXBBZGRyZXNzID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihzb3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRy
KGFkZHJlc3MsICZsZW4pKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKCpp
cEFkZHJlc3MpIC8gbGVuOyBpKyspCisgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQo
V2ViQ29yZTo6SVBBZGRyZXNzKGlwQWRkcmVzc1tpXSkpOworCisgICAgKCpjb21wbGV0aW9uSGFu
ZGxlcikoeyBhZGRyZXNzZXMgfSk7CisKKyAgICByZXNvbHZlUXVldWUtPnJlbW92ZUNhbmNlbEFu
ZENvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIpOworfQorCitjb25zdCBXZWJDb3JlOjpETlND
b21wbGV0aW9uSGFuZGxlciogRE5TUmVzb2x2ZVF1ZXVlU291cDo6Z2V0Q29tcGxldGlvbkhhbmRs
ZXIodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgYXV0byBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSBtX2NvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGNvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycyA9PSBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gJmNvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycy0+dmFsdWUuZmlyc3Q7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVt
b3ZlQ2FuY2VsQW5kQ29tcGxldGlvbkhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlcnMucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0
d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBudWxs
cHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVl
dWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZp
ZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gYWRkcmVzcyA9IGFkb3B0R1JlZihzb3Vw
X2FkZHJlc3NfbmV3KGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIDApKTsKKyAgICBhdXRvIGNhbmNl
bGxhYmxlID0gYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpOworICAgIHNvdXBfYWRkcmVz
c19yZXNvbHZlX2FzeW5jKGFkZHJlc3MuZ2V0KCksIHNvdXBfc2Vzc2lvbl9nZXRfYXN5bmNfY29u
dGV4dChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSksIGNhbmNl
bGxhYmxlLmdldCgpLCByZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrLCB0aGlzKTsKKworICAg
IGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGFkZHJlc3MuZ2V0KCkpLCAiaWRlbnRpZmllciIs
IEdVSU5UX1RPX1BPSU5URVIoaWRlbnRpZmllcikpOworCisgICAgbV9jb21wbGV0aW9uQW5kQ2Fu
Y2VsSGFuZGxlcnMuYWRkKGlkZW50aWZpZXIsIGNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShjYW5jZWxsYWJsZSkpKTsKK30KKwor
dm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGNvbXBsZXRpb25B
bmRDYW5jZWxIYW5kbGVyID0gbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuZmluZChpZGVu
dGlmaWVyKTsKKworICAgIGlmIChjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlciAhPSBtX2NvbXBs
ZXRpb25BbmRDYW5jZWxIYW5kbGVycy5lbmQoKSkgeworICAgICAgICBnX2NhbmNlbGxhYmxlX2Nh
bmNlbChjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlci0+dmFsdWUuc2Vjb25kLmdldCgpKTsKKyAg
ICAgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMucmVtb3ZlKGlkZW50aWZpZXIpOwor
ICAgIH0KK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1
MDU3NTkwYzJhNGUzODJiOGVmMWJkZmQzMDVhYTllOThmOWY1MzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291
cC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1
YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAo
KSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZv
aWQgc3RvcFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikgZmluYWw7CisKKyAgICBjb25zdCBX
ZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciogZ2V0Q29tcGxldGlvbkhhbmRsZXIodWludDY0
X3QgaWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmVDYW5jZWxBbmRDb21wbGV0aW9uSGFuZGxl
cih1aW50NjRfdCBpZGVudGlmaWVyKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNV
c2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgY29tcGxldGlvbkFuZENh
bmNlbEhhbmRsZXJzID0gc3RkOjpwYWlyPFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyLCBH
UmVmUHRyPEdDYW5jZWxsYWJsZT4+OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgY29tcGxldGlv
bkFuZENhbmNlbEhhbmRsZXJzPiBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVyczsKKworICAg
IHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcg
RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVTb3VwOworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMTE0NTdkZGQyMjMzYzc0M2ExOGNkZjgzODM2OTBm
ZjhmNjM5NTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiBJ
Z2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE5TLmgiCi0jaW5j
bHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpZiBVU0UoU09VUCkKLQotI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgot
I2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0j
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBJbml0aWFsbHkgdHJ1ZSB0byBlbnN1
cmUgcHJlZmV0Y2ggc3RheXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2ZSBwcm94eSBzZXR0aW5ncy4K
LXN0YXRpYyBib29sIGlzVXNpbmdIdHRwUHJveHkgPSB0cnVlOwotc3RhdGljIGJvb2wgaXNVc2lu
Z0h0dHBzUHJveHkgPSB0cnVlOwotCi1zdGF0aWMgYm9vbCBkaWRSZXNvbHZlUHJveHkoY2hhcioq
IHVyaXMpCi17Ci0gICAgLy8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9zc2libGUgcHJveGllcyB0byB1
c2UgZm9yIHRoZSBVUkkuIElmIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0IGlzCi0gICAgLy8g
ZGlyZWN0Oi8vICh0aGUgdXN1YWwgY2FzZSksIHRoZW4gdGhlIHVzZXIgcHJlZmVycyBub3QgdG8g
dXNlIGEgcHJveHkuIFRoaXMgaXMgc2ltaWxhciB0bwotICAgIC8vIHJlc29sdmluZyBob3N0bmFt
ZXM6IHRoZXJlIGNvdWxkIGJlIG1hbnkgcG9zc2liaWxpdGllcyByZXR1cm5lZCBpbiBvcmRlciBv
ZiBwcmVmZXJlbmNlLCBhbmQKLSAgICAvLyBpZiB3ZSdyZSB0cnlpbmcgdG8gY29ubmVjdCB3ZSBz
aG91bGQgYXR0ZW1wdCBlYWNoIG9uZSBpbiBvcmRlciwgYnV0IGhlcmUgd2UgYXJlIG5vdCB0cnlp
bmcKLSAgICAvLyB0byBjb25uZWN0LCBtZXJlbHkgdG8gZGVjaWRlIHdoZXRoZXIgYSBwcm94eSAi
c2hvdWxkIiBiZSB1c2VkLgotICAgIHJldHVybiB1cmlzICYmICp1cmlzICYmIHN0cmNtcCgqdXJp
cywgImRpcmVjdDovLyIpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRSZXNvbHZlUHJveHkoR1Byb3h5
UmVzb2x2ZXIqIHJlc29sdmVyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgYm9vbCogaXNVc2luZ1By
b3h5VHlwZSwgYm9vbCogaXNVc2luZ1Byb3h5KQotewotICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKLSAgICBHVW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdfcHJveHlfcmVzb2x2ZXJfbG9v
a3VwX2ZpbmlzaChyZXNvbHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKLSAgICBpZiAo
ZXJyb3IpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBkZXRlcm1pbmluZyBzeXN0ZW0g
cHJveHkgc2V0dGluZ3M6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgKmlzVXNpbmdQcm94eVR5cGUgPSBkaWRSZXNvbHZlUHJveHkodXJpcy5nZXQo
KSk7Ci0gICAgKmlzVXNpbmdQcm94eSA9IGlzVXNpbmdIdHRwUHJveHkgfHwgaXNVc2luZ0h0dHBz
UHJveHk7Ci19Ci0KLXN0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2so
R09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17
Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAm
aXNVc2luZ0h0dHBQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJj
ZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAgIGRpZFJlc29s
dmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwc1By
b3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotdm9pZCBETlNSZXNvbHZl
UXVldWU6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgR1JlZlB0cjxHUHJveHlSZXNvbHZl
cj4gcmVzb2x2ZXI7Ci0gICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3Vw
U2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0UHRyKCksIG51bGxwdHIp
OwotICAgIEFTU0VSVChyZXNvbHZlcik7Ci0KLSAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9h
c3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94
eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOwotICAgIGdfcHJv
eHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cHM6Ly9leGFtcGxl
LmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjaywgJm1faXNV
c2luZ1Byb3h5KTsKLX0KLQotc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxsYmFjayhTb3VwQWRkcmVz
cyosIGd1aW50LCB2b2lkKikKLXsKLSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmRl
Y3JlbWVudFJlcXVlc3RDb3VudCgpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZv
cm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLQotICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJl
c29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAo
aG9zdG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBETlNSZXNvbHZlUXVl
dWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmNwcAppbmRleCBhNTIwNDA0NWRjNzIxM2EyZjAxZjJhMTQwN2MwZjBiY2NmMjM3MjEy
Li4yZmYxZTY5ZGVhOWYwMTVlNDMyNjc2N2FiMjEwZDc2ZTgzYjgyOGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5jcHAKQEAgLTQwLDYgKzQwLDEwIEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBj
cmVhdGVUaHJlYWQoKQpAQCAtMTYyLDE1ICsxNjYsMjIgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlk
ZXI6OmRpZFJlY2VpdmVOZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm4KICAgICBOZXR3b3JrUlRDU29ja2V0KGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCAqdGhpcyku
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKKwogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2
NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29s
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlm
aWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFi
bGUgeworICAgIGF1dG8gcmVzb2x2ZXIgPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZShpZGVu
dGlmaWVyLCBbdGhpcywgaWRlbnRpZmllcl0oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0g
ICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gTmV0d29ya1JUQ1Jlc29sdmVyOjpFcnJv
cjo6Q2FuY2VsbGVkKQorICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IFdlYkNvcmU6
OkROU0Vycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vy
cm9yKDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNv
bHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7CisK
KyAgICAgICAgYXV0byBhZGRyZXNzZXMgPSBXVEY6Om1hcChyZXN1bHQudmFsdWUoKS5nZXQoKSwg
W10gKGF1dG8mIGFkZHJlc3MpIHsKKyAgICAgICAgICAgIHJldHVybiBSVENOZXR3b3JrOjpJUEFk
ZHJlc3MgeyBydGM6OklQQWRkcmVzcyB7IGFkZHJlc3MuZ2V0U2luQWRkcigpIH0gfTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlm
aWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNv
bHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKQEAgLTE4Miw2ICsxOTMs
MzQgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OnN0b3BSZXNvbHZlcih1aW50NjRfdCBpZGVu
dGlmaWVyKQogICAgICAgICByZXNvbHZlci0+c3RvcCgpOwogfQogCisjZWxzZQorCit2b2lkIE5l
dHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhp
cywgaWRlbnRpZmllcl0oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICBp
ZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCkKKyAgICAg
ICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJS
VENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBhZGRyZXNzZXMgPSBXVEY6
Om1hcChyZXN1bHQudmFsdWUoKS5nZXQoKSwgW10gKGF1dG8mIGFkZHJlc3MpIHsKKyAgICAgICAg
ICAgIHJldHVybiBSVENOZXR3b3JrOjpJUEFkZHJlc3MgeyBydGM6OklQQWRkcmVzcyB7IGFkZHJl
c3MuZ2V0U2luQWRkcigpIH0gfTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVk
QWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVyKTsKKyAgICB9OworCisgICAgV2ViQ29yZTo6
cmVzb2x2ZUROUyhhZGRyZXNzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpzdG9wUmVzb2x2ZXIodWludDY0X3Qg
aWRlbnRpZmllcikKK3sKKyAgICBXZWJDb3JlOjpzdG9wUmVzb2x2ZUROUyhpZGVudGlmaWVyKTsK
K30KKworI2VuZGlmCisKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjbG9zZUxpc3RlbmluZ1Nv
Y2tldHMoRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV9pc0xpc3RlbmluZ1NvY2tldEF1dGhvcml6ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4
IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjFiZmFmYTQ2YjcyMGMz
YzIyMTNhNzExY2M3YmRjNjZkMWFiNzcxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIs
NjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCByZXNvbHZl
ZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBD
RlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKKy8vIEZJWE1FOiBVc2UgdGhlIGZ1bmN0
aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS4KKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9VTlVTRUQo
dHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewotICAgICAg
ICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHByb3Zp
ZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENSZXNv
bHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJlZiByZXNv
bHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwg
JnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBzaXpl
X3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAgIFZlY3Rv
cjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRh
UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKLSAg
ICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nlcy51bmNo
ZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3Mt
PnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7
CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+KG5ldyBOZXR3
b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsK
IH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZlcjo6TmV0
d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigpCiB7
Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNldENsaWVu
dChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVua25vd24p
KTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRk
cmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgIENG
SG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFt
ZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgp
LCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQm9v
bGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NG
SG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBtX2lkZW50aWZpZXIsIG1fY29t
cGxldGlvbkhhbmRsZXIpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCgpCiB7
Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBDRkhvc3RJbmZv
VHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KLXZvaWQgTmV0d29ya1JU
Q1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQQWRkcmVzcz4m
IGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
bV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYWRkcmVz
c2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKG1faWRlbnRpZmllcik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNmNzM2ZTc2N2E2
NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1Zjc2MjcyYzU4MDJiY2IwM2VhYjczNjQx
ODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIFVT
RShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1JUQ1Jl
c29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93biwgQ2FuY2Vs
bGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+IGNy
ZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYm
KTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+PiwgRXJyb3I+Owot
ICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2aXJ0dWFs
IH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtSVENSZXNvbHZl
cihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAgdmlydHVhbCB2
b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRyZXNzKTsKLSAg
ICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3RvcjxSVENOZXR3
b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0gICAgQ29tcGxldGlvbkhhbmRsZXIgbV9j
b21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hvc3Q7Citwcm90
ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkROU0NvbXBs
ZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MWZkYjU1NTI3
OWViZTBiMjIxNzFlNTJlYzAwNzE2NTk4YjE1OTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3Bw
CkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQor
CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0
aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5
cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgQVNTRVJUKGluZm8pOwor
ICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eq
PihpbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNh
bGxiYWNrLgorICAgICAgICByZXNvbHZlci0+Y29tcGxldGVkKG1ha2VVbmV4cGVjdGVkKFdlYkNv
cmU6OkROU0Vycm9yOjpVbmtub3duKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBC
b29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2VzID0gKENGQXJy
YXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVfdCBjb3VudCA9IENGQXJyYXlHZXRD
b3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9yPFdlYkNvcmU6OklQQWRkcmVzcz4g
YWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50KTsK
KworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewor
ICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRl
eChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAgICBhdXRvKiBhZGRyZXNzID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFHZXRCeXRlUHRy
KGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpJUEFk
ZHJlc3MoKmFkZHJlc3MpKTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRlZCh7IGFkZHJl
c3NlcyB9KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4gTmV0d29y
a1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4obmV3IE5ldHdvcmtSVENSZXNvbHZlckNvY29h
KGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7Cit9CisKK05ldHdvcmtS
VENSZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNv
bHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0Lmdl
dCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAg
Q0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3Zv
aWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykK
K3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIENGSG9zdENs
aWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNv
bnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1
bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQm9vbGVhbiBy
ZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFk
ZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9
CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0b3AoKQoreworICAgIENGSG9zdENh
bmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RB
ZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2Nv
bXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCkpOworfQorCit2b2lkIE5ldHdvcmtSVENS
ZXNvbHZlckNvY29hOjpjb21wbGV0ZWQoV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIGFk
ZHJlc3Nlc09yRXJyb3IpCit7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGFkZHJlc3Nlc09yRXJyb3IpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg0MTk4ZDE2YTAxMmY0MWIzYTFhYzdlN2E1ZWFhZTNiM2NkYjQwZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNv
bHZlckNvY29hLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgor
CisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIHdoZW4gd2UgY29tcGxldGUgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBETlNSZXNvbHZlUXVldWVDRk5ldC4KK2NsYXNzIE5ldHdvcmtSVENSZXNv
bHZlckNvY29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3QgaWRlbnRpZmllciwg
V2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZl
ckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykg
ZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyAgICB2b2lkIGNvbXBsZXRlZChXZWJD
b3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYpOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxD
Rkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGE4YTkxOGZiMmNhYzg0ZTVmYTRiNWUyZDcyOWYxNmM3YjZkYTFi
ZWQuLjhhYzU2YTBkMTA1ZWE5MDdjMjNkYjJmNzhkZDMxZTM1YThiNmM3YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTE1LDYgKzkx
NSw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJG
QjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAw
RjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87
IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcx
RjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi87IH07CisJCTQxMTJC
NTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FC
MDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovOyB9OwogCQk0MTFCMjI2
NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8q
IExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8q
IE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQu
Y3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMwMDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
MDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAg
LTMyODcsNiArMzI4OCw4IEBACiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3
b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5l
dHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJC
NTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJD
b2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0
ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2Vi
UlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENO
ZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3
b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5l
dHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0
RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIz
Niw2ICs2MjM5LDggQEAKIAkJCQk0MURDNDU5ODFFM0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JU
Q1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAv
KiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAogCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3
NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywKKwkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5
ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovLAorCQkJCTQxMTJCNTQ4MUY5RkQz
QUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovLAogCQkJCTQxMzA3NTk4
MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5
OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovLAogCQkJCTQxMzA3NTlE
MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0Lm1lc3NhZ2VzLmluICovLApAQCAt
MTA2MjEsNiArMTA2MjYsNyBAQAogCQkJCTQxREM0NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3
b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAw
RjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMwNzVBOTFERTg1
RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0
d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWY3OGY2YTk5ZjNjN2JlZTRmMWM1
NDY3MjM2MTY2MmNkZDFkMjViMS4uOTc2YTcyNDY4N2E3YTIxNjlmMzE1ZTYxNjc2YTE3ZjYxNTMw
Y2JjMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDE4LTAyLTE5ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0
aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IG5ldyB1bml0IHRlc3RzIGZvciBoZSByZXNvbHZlIGFuZCBzdG9wUmVzb2x2ZSBmdW5jdGlvbnMu
IFdlIG5lZWQgdG8gY29tcGlsZSB0aGVtIGZvciB0aGUKKyAgICAgICAgb3RoZXIgcGxhdGZvcm1z
IHdoZW4gdGhlIEFQSXMgYXJlIHN1cHBvcnRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
UGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ROUy5jcHA6CisKIDIwMTgtMDMtMDYgIERvbWluaWsgSW5mdWVociAgPGRpbmZ1ZWhyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0FSTV0gRGlzYWJsZSB0ZXN0cyB0aGF0IHJ1biBvdXQgb2YgbWVt
b3J5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0YWVmNjk1M2NkMTYx
NGJmNmNmMDNjZTIyNDhhZmIzYzZkMmRlNWY4Li42MjAyZjQ2YmFmMGIzMzc4NWM4NWNhZDcyYzZi
MjgzM2JlODg3ZDQzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTg3
LDYgKzg3LDcgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV2ViQ29yZS9DU1NQYXJzZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9ETlMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
ZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2Vi
Q29yZS9HcmlkUG9zaXRpb24uY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRE5TLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9E
TlMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhjYjdlNTkzMDMyZjA4M2FjZTQ5ZTJlYTM2ZmEyZGJmNWU1ZGQ4
ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RE5TLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2Fs
aWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0
aWVzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ROUy5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK2Jvb2wgZG9uZSA9IGZhbHNlOworCitURVNUKEROU1Rlc3QsIGNhbmNlbFJl
c29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAg
ICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53ZWJraXQub3JnIik7CisgICAg
dWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfRkFMU0Uo
cmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocmVzdWx0LmVycm9yKCkg
PT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCk7CisKKyAgICAgICAgcmV0dXJuOworICAg
IH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFtZSwgaWRlbnRp
ZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHN0b3BSZXNvbHZlRE5TKGlk
ZW50aWZpZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoRE5TVGVzdCwgY2Fu
dFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisK
KyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoIm5vdGF2YWxpZGRvbWFpbi5ub3Rh
dmFsaWRkb21haW4iKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAgIEROU0Nv
bXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5TQWRkcmVz
c2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworCisg
ICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FudFJlc29sdmUpOwor
CisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29s
dmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKEROU1Rlc3QsIHJlc29sdmVETlMpCit7
CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJp
bmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53ZWJraXQub3JnIik7CisgICAgdWludDY0X3QgaWRl
bnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxl
ciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3Zh
bHVlKCkpOworCisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335095</attachid>
            <date>2018-03-06 07:05:07 -0800</date>
            <delta_ts>2018-03-07 05:37:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180306160506.patch</filename>
            <type>text/plain</type>
            <size>83524</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM0ZjI5MDk3OGQyMzE2
MmNkZWVmYjdlODYzNjZhMjNjYTQ2NjRjNC4uZDA3MTc3MzdkODgwYzg3MzNiOWM4ODZlODdkZGE3
NDIyMzM4ODdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAyLTA4ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIGluIHRoZSBETlNSZXNvbHZlUXVldWUgYWxs
b3dpbmcgdG8gcmV2b2x2ZSBob3N0bmFtZXMgYW5kIGdldCB0aGUgcmVzdWx0LiBBZGQgcGxhdGZv
cm0KKyAgICAgICAgc3BlY2lmaWMgY29kZSBmb3Igc291cCBwbGF0Zm9ybSBhbmQgcmVmYWN0b3Ig
dGhlIG90aGVyIHBsYXRmb3Jtcy4gQWRkZWQgbmV3IEFQSSB0byB0aGUgRE5TIEFQSSBoZWFkZXIK
KyAgICAgICAgYW5kIG1vdmUgdGhlIGdlbmVyYWwgY29kZSB0byB0aGUgRE5TLmNwcCBmaWxlLCB0
aGF0IHdheSB3ZSBjYW4gcmV1c2UgdGhhdCBjb2RlIGluIGFsbCB0aGUgcGxhdGZvcm1zCisgICAg
ICAgIGFuZCBsZWF2ZSB0aGUgUmVzb2x2ZVF1ZXVlIGNsYXNzIG9mIHRoZSBwbGF0Zm9ybXMgaW4g
YSBmaWxlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSByZWZhY3Rv
ci4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNt
YWtlOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIHRoZSBETlMuY3BwIGZvciBj
b21waWxhdGlvbi4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OiBNb3ZlIHRoZSBETlNDRk5l
dCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVDRk5ldC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29s
dmVRdWV1ZUNGTmV0LCBhZGQgdGhlIEROUy5jcHAKKyAgICAgICAgZm9yIGNvbXBpbGF0aW9uLiBB
ZGQgdGhlIG5ldyBETlNSZXNvbHZlUXVldWVDRk5ldCBjbGFzcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9DdXJsLmNtYWtlOiBNb3ZlIHRoZSBETlNDRk5ldCBjbGFzcyB0byBETlNSZXNvbHZlUXVldWVD
dXJsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TLmNwcDogQWRkIHRoaXMgZmlsZSB3
aXRoIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlMgZnVuY3Rpb25zIGZvcgor
ICAgICAgICBhbGwgdGhlIHBsYXRmb3Jtcy4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNoRE5T
KTogQ29waWVkIGZyb20gZXZlcnkgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlRE5TKTogQWRkIHRoZSBmdW5jdGlvbiwgcmVzb2x2ZXMgYSBob3N0bmFt
ZSwgcmVjZWl2ZXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlIG9wZXJhdGlvbgorICAgICAgICBhbmQg
dGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5T
KTogQWRkIHRoZSBmdW5jdGlvbiwgc3RvcHMgYSByZXNvbHV0aW9uIG9wZXJhdGlvbiwgcmVjZWl2
ZXMgdGhlIGlkZW50aWZpZXIKKyAgICAgICAgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5oOiBBZGQgdGhlIG5ldyBBUElzIHJlc29sdmVETlMgYW5kIHN0
b3BSZXNvbHZlRE5TIHdpdGggdGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgICAgICAgIGltcGxl
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjpJUEFkZHJlc3MpOiBBZGQg
dGhpcyBjbGFzcyB1c2VkIHRvIHNlbmQgdGhlIHJlc29sdmVkIGFkZHJlc3MgaW5mb3JtYXRpb24s
IGl0IGRvZXMKKyAgICAgICAgbm90IGRlcGVuZCBvbiBsaWJ3ZWJydGMgcnRjIGNsYXNzZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmdldCk6IEdldCBhIHJlZmVyZW5jZSB0byB0aGUg
c3RydWN0IHNvY2thZGRyX2luIGluIHRoZSBJUEFkZHJlc3MgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpETlNDb21wbGV0aW9uSGFuZGxlcik6IEFkZCB0aGlzIENvbXBsZXRpb25IYW5kbGVyIHR5
cGUgdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZyB0aGUgRE5TCisgICAgICAgIGFkZHJlc3MuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwOiBBZGQgdGhlIERO
U1Jlc29sdmVRdWV1ZSBwbGF0Zm9ybSBpbnN0YW50aWF0aW9uIGluIHRoZSBzaW5nbGV0b24uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbik6IFVzZSBETlNSZXNv
bHZlUXVldWUgcGxhdGZvcm0gY2xhc3NlcyB3aGVuIGNyZWF0aW5nIHRoZSBzaW5nbGV0b24uLgor
ICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKTogQWRkIHRoaXMgbWV0
aG9kIHRvIGdldCB0aGUgYWRkcmVzcyBvZiBhIGhvc3RuYW1lLCBpdCBzZW5kcyB0aGUKKyAgICAg
ICAgaWRlbnRpZmllciBhbmQgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byB1c2Ugd2hlbiByZXR1
cm5pbmcgdGhlIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c3Rv
cFJlc29sdmUpOiBBZGQgdGhpcyBtZXRob2QgdG8gc3RvcCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24g
d2hlbiByZXF1aXJlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1
ZS5oOiBBZGQgdGhlIG5ldyBtZXRob2RzIGFuZCBtYWtlIHRoZSBjbGFzcyBhYnN0cmFjdCwgc28g
dGhhdCBldmVyeQorICAgICAgICBwbGF0Zm9ybSBjYW4gaW1wbGVtZW50IHRoZSBmdW5jdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcC4KKyAgICAgICAgQWRkIHRoZSBtZXRob2RzIHRvIHRoZSBuZXcgY2xhc3MgRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIG1vdmUgdGhlIHByZWZldGNoRE5TIHRvIHRoZSBETlMuY3BwIGdlbmVyYWwK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNSZXNvbHZlUXVldWVDRk5ldC5oOiBBZGQgdGhlIG5ldyBjbGFzcyBpbmhlcml0aW5nIGZyb20g
dGhlIEROU1Jlc29sdmVRdWV1ZS4gQWRkIHRoZQorICAgICAgICBuZXcgbWV0aG9kcywgd2UgaGF2
ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcyBhbmQgbW92ZSB0aGUgTmV0d29ya1JUQ1Jlc29s
dmVyIGZvciBDT0NPQSBjb2RlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVl
dWVDRjo6cmVzb2x2ZSk6IER1bW15IG1ldGhvZCwgbm90IGltcGxlbWVudGVkLgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ0Y6OnN0b3BSZXNvbHZlKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmg6IEFk
ZCB0aGUgbmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0aGUgRE5TUmVzb2x2ZVF1ZXVlLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cmVzb2x2ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oOiBO
ZXcgY2xhc3MgaW5oZXJpdGluZyBmcm9tIHRoZSBETlNSZXNvbHZlUXVldWUgY2xhc3MsIGFkZGlu
ZworICAgICAgICBhIEhhc01hcCB3aXRoIHRoZSBhY3RpdmUgb3BlcmF0aW9ucywgaXQgYWxsb3dz
IHN0b3BwaW5nIHRoZW0uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29s
dmVRdWV1ZVNvdXAuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0ROU1NvdXAuY3BwLgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZWRXaXRoT2Jz
ZXJ2ZXJDYWxsYmFjayk6IENhbGxlZCB3aGVuIHRoZSByZXN1bHQgYWRkcmVzcyBmcm9tIHRoZSBz
b3VwIHBsYXRmb3JtIGlzIHJlYWR5LAorICAgICAgICBzZW5kcyB0aGUgYWRkcmVzcyB0byB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291
cDo6cmVzb2x2ZSk6IExhdW5jaCB0aGUgcmVzb2x2ZSBvcGVyYXRpb24gd2l0aCB0aGUgc291cCBs
aWJyYXJ5LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUpOiBTdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiBvbiBwcm9jZXNzIHdpdGggYSBHQ2FuY2Vs
bGFibGUuCisKIDIwMTgtMDMtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBSZW1vdmUgdW51c2VkIHNjcm9sbGluZy1yZWxh
dGVkIGNvZGUgaW4gVGV4dHVyZU1hcHBlckxheWVyLCBDb29yZGluYXRlZEdyYXBoaWNzIHN0YWNr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDg0MTNmODc5YTMyNTQyM2U2MDBiYzJhZGM0NDVkN2EyYzZiODNmNTYuLjQz
YTVkOTkxNjM1ZWI0Y2EzZjJjY2M4MzRiN2FlMmMyZTY0OGM0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTgtMDItMDggIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5j
b20+CisKKyAgICAgICAgTWFrZSBOZXR3b3JrUlRDUmVzb2x2ZXIgcG9ydCBhZ25vc3RpYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4ODU1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgc3Bl
Y2lmaWMgQ29jb2EgY2xhc3MgdG8gaXNvbGF0ZSB0aGUgZ2VuZXJpYyBjb2RlIGluIHRoZSBiYXNl
IGNsYXNzLCBtYWtlIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHBvcnQKKyAgICAgICAgYWdub3N0
aWMgYW5kIGRlcGVuZGVudCBvbiBETlMgQVBJIGluIHRoZSBwbGF0Zm9ybSBkaXJlY3Rvcnkgd2hp
Y2ggZW5jYXBzdWxhdGVzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZXRhaWxzLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6IENyZWF0ZSBh
biBhbGlhcyBjbGFzcyBuYW1lIGRlZmluZWQgcGVyIHBsYXRmb3JtIHRvIGluc3RhbnRpYXRlIHRo
ZSByZXNvbHZlci4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVS
ZXNvbHZlcik6IFVzZWQgdGhlIGFsaWFzIGNsYXNzIG5hbWUgYW5kIHJlY2VpdmUgYSBuZXcgSVBB
ZGRyZXNzIGNsYXNzIHRoYXQgaXMgbm90CisgICAgICAgIGRlcGVuZGVudCBvbiBydGMgbGlid2Vi
cnRjIGxpYnJhcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENS
ZXNvbHZlci5jcHA6IFJlbW92ZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gVXNlIHRoZSBE
TlMgQVBJIHRvIGltcGxlbWVudCB0aGUKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBp
biB0aGUgZGVmYXVsdCBzdGFydCBhbmQgc3RvcCBtZXRob2RzLiBBZGQgdGhlIGlkZW50aWZpZXIg
b2YgdGhlIHJlc29sdmUgb3BlcmF0aW9uIHRvIHRoZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRDUmVzb2x2ZXIpOiBBZGQgdGhlIGlkZW50aWZp
ZXIgaW4gdGhlIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVz
b2x2ZXI6On5OZXR3b3JrUlRDUmVzb2x2ZXIpOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmlj
IGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RhcnQpOiBBZGQg
YSBuZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEROUyBBUEkuCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENSZXNvbHZlcjo6c3RvcCk6IERpdHRvCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5oOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgYW5kIHVzZSB0aGUgRE5TUmVzb2x2ZVF1ZXVlIGZvciBhIGdlbmVyYWwKKyAgICAg
ICAgc29sdXRpb24gdG8gaW1wbGVtZW50IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBBdm9p
ZCB1c2luZyB0aGUgSVBBZGRyZXNzIGNsYXNzIHRoYXQgZGVwZW5kcyBvbiBsaWJ3ZXJ0YyBjbGFz
c2VzIHRvIG1ha2UKKyAgICAgICAgaXQgbW9yZSBnZW5lcmFsIHJlZ2FyZGluZyBETlMgbmFtZSBy
ZXNvbHV0aW9uLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTog
TWFrZSB0aGlzIGNsYXNzIHZpcnR1YWwuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENSZXNv
bHZlcjo6c3RvcCk6IERpdHRvLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcC4KKyAgICAg
ICAgTm93IHRoaXMgY2xhc3Mgb3ZlcnJpZGVzIHRoZSBzdGFydCBhbmQgc3RvcCBtZXRob2RzIHRo
YXQgdXNlIEROUywgY29jb2EgaW1wbGVtZW50YXRpb24gc2hvdWxkIHVzZSB0aGUgRE5TIG1ldGhv
ZHMgaW4gdGhlIGZ1dHVyZSBhbmQKKyAgICAgICAgcmVtb3ZlIHRoaXMgY2xhc3MsIG1ha2luZyBz
dXJlIGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY2xhc3MgaXMgaW4gdGhlIHBsYXRmb3JtIGRp
cmVjdG9yeS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaDogQ29waWVkIENvY29hIGNvZGUgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaC4KKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZTogQWRkIE5ldHdvcmtSVENSZXNvbHZlciBjb21waWxhdGlvbiBmb3IgR1RLLgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIE5ldHdvcmtS
VENSZXNvbHZlckNvY29hIGNsYXNzIHRvIHRoZSBjb21waWxhdGlvbi4KKwogMjAxOC0wMy0wNiAg
TXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIEltcGxlbWVudCBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggZWU3YjQwNzIwZjBk
OGY2ZmIyMmVhMTZjN2ZmY2YyYzhkNzhlZDBlYy4uMmMwN2YzYTJkNzJkN2E3MTM5OWRlZWZkYzky
NTc5NmFjZDhlMTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdp
bi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01
MCw3ICs1MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25l
dHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVTdG9yYWdlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3Rv
cmFnZUNGTmV0LmNwcAotICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisgICAg
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggM2U4
NzIzMzg5NjEyZGRkNTczYzZiZDUzYWJjNDg3MDEzYTQ0NzM2Zi4uODA1MjBhYjBmY2UwZGY0ODMy
Zjc4N2I0NWMxMTBhOGFmMzg3ODFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTQx
Myw3ICs0MTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQogCi0gICAgcGxh
dGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggMjNhOTQwMzRlYTkzNDQzOTNmOTlkMDRhMTkyODJlYjFjODY1
NmQ1Yy4uNzg4Y2ZkYjQ0NjY4NTNmMmJmZjMzZGY2MjJhZGQ4MzIyOGM3MjRjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTE3MDcsNiArMTcwNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcAogcGxhdGZvcm0vbmV0d29yay9Db29raWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxCYXNlLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAK
K3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcAogcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVl
dWUuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAogcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg1NDliZTM0MTM2
NzJhMDk2ZWFlMjI3ZjlhNmRhZmM0NDNjNjEyY2IuLjViZTI1NWJjZTQyZjBlY2ExNDNiOGI3MzNk
MzJjMDIzNTU4OGVlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDgyLDcgKzQ4Miw3
IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5jcHAKIHBsYXRm
b3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwCiAKLXBsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwCitwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcAogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogcGxhdGZv
cm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OGM4ZDFmODAzN2ZiODkwYjMzNGI3
ZTAwYTRkOTgwZGMyN2EzY2YwLi41M2VlYzJiMDI2M2FiMDJkZTAyYjAwYzcwNWJhNzQ1ZmRlZTk1
NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMjU1LDYgKzIyNTUsNyBAQAogCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0VFNjg0NTcxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1
QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3RUU2ODQ2RjEyRDI2RTM4MDBF
NzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNv
bHZlUXVldWVDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1RDEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAv
KiBKU0ZldGNoQm9keS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0Y0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmggKi87IH07CiAJ
CTdGNEM5NkREMUFENDQ4MzUwMDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Y0Qzk2RDkxQUQ0NDgz
NTAwMzY1QTUxIC8qIEpTUmVhZGFibGVTdHJlYW1TaW5rLmggKi87IH07CkBAIC05NjA0LDYgKzk2
MDUsNyBAQAogCQk3RUU2ODQ1QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3RUU2ODQ1QzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0VFNjg0NUMxMkQyNkUzODAwRkY5NDE1IC8qIERO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERO
U1Jlc29sdmVRdWV1ZUNGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4
NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hCb2R5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hCb2R5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Y0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUxIC8qIEpT
UmVhZGFibGVTdHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUmVhZGFibGVTdHJlYW1TaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEyMTI1LDggKzEyMTI3LDkgQEAKIAkJQjJFNEVDOTUwRDAwQzIyQjAwNDMyNjQzIC8qIFNW
R1pvb21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHWm9vbUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRTRFQzk2MEQwMEMyMkIwMDQz
MjY0MyAvKiBTVkdab29tRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdab29t
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkVEOTc3MDBCMUY1NUNF
MDAyNTdEMEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUFGOEUxMzIxMjU2NUE0NDQ1MjMwRkY3IC8qIEROUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEROUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMkYzNEZFODBFODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TUmVzb2x2ZVF1
ZXVlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RTBBQjc1
QTZFMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0M0RjBBQjc1QTZFMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJGQTNDNTAwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZWRBbmdsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlZEFuZ2xl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzIxLDYgKzE4NzI0LDcgQEAK
IAkJCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCAqLywK
IAkJCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuY3BwICovLAog
CQkJCUU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oICovLAorCQkJ
CTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovLAogCQkJCUIyRjM0RkU1MEU4
MkY4MTQwMEY2MjdDRCAvKiBETlMuaCAqLywKIAkJCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUg
LyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLywKIAkJCQlGQTZFNDY2RkNEMDQxOEE5OTY2QTVCNjAg
LyogRE5TUmVzb2x2ZVF1ZXVlLmggKi8sCkBAIC0yMzQ0Nyw3ICsyMzQ1MSw4IEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQk3RUU2ODQ0RTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCAqLywKIAkJCQk1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNh
dGVJbmZvLmggKi8sCi0JCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNw
cCAqLywKKwkJCQlCMkYzNEZFODBFODJGODI3MDBGNjQ4Q0QgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZO
ZXQuY3BwICovLAorCQkJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNSZXNvbHZlUXVl
dWVDRk5ldC5oICovLAogCQkJCTdFRTY4NDUzMTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcCAqLywKIAkJCQk3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovLAogCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCkBAIC0yNzMxMSw2ICsyNzMxNiw3IEBACiAJ
CQkJRkQzMTYwOTExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NDczMEQ3NzEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkYzNEZFNjBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZEOSAvKiBE
b2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNCQjU5RjQxNDU3QTQwRDAwQUM1NkZFIC8q
IERvY3VtZW50RXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGM0QwOTc2NTc2
NjAwNTgyNkQ5IC8qIERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0N1cmwuY21ha2UKaW5kZXggNGE4MmViMDk5ZjVmMjcyMGNiZTNkMjVkMzY5MTAzNWI1
NmMwYmNmOC4uNDgwNjBiODUzYmVjYzlkYmIxOTNlYzZiYzg5MjhhNzRjMzg5YWU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DdXJsLmNtYWtlCkBAIC0yMSw3ICsyMSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmNwcAotICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94
eVNlcnZlckN1cmwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JD
dXJsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAu
dHh0IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CmluZGV4IDhlNDdk
NjJhMzg2MzEyNzIyNmVlZDk0NzFiM2QzMjg2YzFiMjk3OTUuLmQ2NGZjZmJlYTI4MTQ3ZGFkZjQz
MGIyZmZiNGMwZmVhNjBiOTVkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NvdXJjZXNTb3VwLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKQEAgLTI3LDcgKzI3LDcgQEAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU291cC5jcHAKIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9D
cmVkZW50aWFsU3RvcmFnZVNvdXAuY3BwCi1wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5j
cHAKK3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlT
ZXJ2ZXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ETlMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxMTIyZGIzZDg2N2ViZTZkYzA3MjkyMTIwZmVlOTc2ZTIzODI1MzAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTggSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TLmgiCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuYWRkKGhv
c3RuYW1lKTsKK30KKwordm9pZCByZXNvbHZlRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLnJlc29sdmUoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBzdG9wUmVzb2x2ZUROUyh1aW50NjRfdCBpZGVudGlm
aWVyKQoreworICAgIFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuc3RvcFJl
c29sdmUoaWRlbnRpZmllcik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RO
Uy5oCmluZGV4IDI5MGY0MDYzNGM4NTg4YmQxZTNiMmU2ZDdkYzAzYzUzNzE3NWU2MmMuLmYwN2Fj
YjUxZDY1ZGIwMGMxNTBkZjQwMTY1MGQ2MTg2ZWIyNWY5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ETlMuaApAQCAtMjMsMTQgKzIzLDM5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgRE5TX2gKLSNkZWZpbmUgRE5TX2gKKyNwcmFnbWEgb25jZQorCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2luY2x1ZGUg
PG5ldGluZXQvaW4uaD4KKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDx3aW5zb2NrMi5o
PgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElQQWRkcmVzcyB7CitwdWJsaWM6CisgICAgSVBB
ZGRyZXNzKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiYgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1lbXNldCgmbV9hZGRyZXNzLCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CisgICAg
ICAgIG1fYWRkcmVzcyA9IGFkZHJlc3M7CisgICAgfQorCisgICAgY29uc3Qgc3RydWN0IGluX2Fk
ZHImIGdldFNpbkFkZHIoKSB7IHJldHVybiBtX2FkZHJlc3Muc2luX2FkZHI7IH07CisKK3ByaXZh
dGU6CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1fYWRkcmVzczsKK307CisKK2VudW0gY2xhc3Mg
RE5TRXJyb3IgeyBVbmtub3duLCBDYW50UmVzb2x2ZSwgQ2FuY2VsbGVkIH07CisKK3VzaW5nIERO
U0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+PiwgRE5TRXJyb3I+OwordXNpbmcgRE5TQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRE5TQWRkcmVzc2VzT3JFcnJvciYm
KT47CisKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSk7Ci19CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwog
Ci0jZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RE5TUmVzb2x2ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmNwcAppbmRleCBmZTNkOGM5MjUzYzA5MjJkYzBkZjU1ODU1M2Q2MjVmYTc2
NGVlZDE2Li44MDE3NzI2OTJlMmVlM2MwM2M2YzliOTU5NTlkZjFmZjU1NTExODg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3Bw
CkBAIC0yNyw2ICsyNywxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZS5oIgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVl
U291cC5oIgorI2VsaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5o
IgorI2VsaWYgVVNFKENGKQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZW5k
aWYKKwogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01MSw3ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHJlc29sdmluZ1JldHJ5
RGVsYXkgeyAxMDBfbXMgfTsKIAogRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNp
bmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT4g
cXVldWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZVBsYXRmb3Jt
PiBxdWV1ZTsKIAogICAgIHJldHVybiBxdWV1ZTsKIH0KQEAgLTU5LDcgKzY3LDYgQEAgRE5TUmVz
b2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiBETlNSZXNvbHZlUXVldWU6
OkROU1Jlc29sdmVRdWV1ZSgpCiAgICAgOiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2ZVF1ZXVl
Ojp0aW1lckZpcmVkKQogICAgICwgbV9yZXF1ZXN0c0luRmxpZ2h0KDApCi0gICAgLCBtX2lzVXNp
bmdQcm94eSh0cnVlKQogewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5p
dGlhbCB2YWx1ZSBvZiBtX2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgogICAgIC8vIHBsYXRmb3Jt
cyB0aGF0IGhhdmUgYW4gYXN5bmNocm9ub3VzIGltcGxlbWVudGF0aW9uIG9mIHVwZGF0ZUlzVXNp
bmdQcm94eSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5T
UmVzb2x2ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29s
dmVRdWV1ZS5oCmluZGV4IDA3YjhmZGNiNjJmZmZlNTY0NWY5MDA3ZTJmNDE4MDUwZTlmODExYjgu
LjNhYjk3YjEwMWM2ODNhNmQ0OTRhZmE0MmM1Y2VkZTBkYWM3NGMyZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjcsNiAr
MjcsNyBAQAogI2lmbmRlZiBETlNSZXNvbHZlUXVldWVfaAogI2RlZmluZSBETlNSZXNvbHZlUXVl
dWVfaAogCisjaW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxh
dG9taWM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFz
cyBETlNSZXNvbHZlUXVldWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZl
UXVldWU+OwogCiBwdWJsaWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+
RE5TUmVzb2x2ZVF1ZXVlKCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1
ZSYgc2luZ2xldG9uKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpID0g
MDsKICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3Jl
bWVudFJlcXVlc3RDb3VudCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVzdHNJbkZsaWdodDsK
ICAgICB9CiAKLXByaXZhdGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoK
ICAgICBib29sIGlzVXNpbmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHko
KTsKLSAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG1f
aXNVc2luZ1Byb3h5IHsgdHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVJc1VzaW5nUHJveHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShj
b25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBt
X3RpbWVyOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAgc3RkOjphdG9taWM8
aW50PiBtX3JlcXVlc3RzSW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQcm94eTsKICAgICBN
b25vdG9uaWNUaW1lIG1fbGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OWE1N2Q5ZDgyMGVkMTNiMDAyZmQxY2QyZDdjODZl
OGUzNzIwMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsaW4g
SmFja3NvbiAgPGNvbGxpbmpAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUg
IkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVGltZXIu
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLSNpZiBQTEFURk9STShJT1Mp
Ci0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShXSU4pCi0jaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGTmV0d29yay5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBETlNS
ZXNvbHZlUXVldWU6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVBy
b3h5U2V0dGluZ3MoKSk7Ci0gICAgaWYgKCFwcm94eVNldHRpbmdzKSB7Ci0gICAgICAgIG1faXNV
c2luZ1Byb3h5ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhh
bXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBz
Q0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVh
dGVDRlVSTCgpOwotCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0g
YWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5
U2V0dGluZ3MuZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFy
cmF5ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgp
LCBwcm94eVNldHRpbmdzLmdldCgpKSk7Ci0KLSAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGh0dHBQcm94eUFycmF5LmdldCgpKTsKLSAgICBDRkluZGV4IGh0dHBz
UHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOwotICAg
IGlmIChodHRwUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQ
cm94eUFycmF5LmdldCgpLCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUp
KQotICAgICAgICBodHRwUHJveHlDb3VudCA9IDA7Ci0gICAgaWYgKGh0dHBzUHJveHlDb3VudCA9
PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkp
LCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cHNQcm94
eUNvdW50ID0gMDsKLQotICAgIG1faXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0
cHNQcm94eUNvdW50OwotfQotCi1zdGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYg
dGhlSG9zdCwgQ0ZIb3N0SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKLXsK
LSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgp
OyAvLyBJdCdzIG9rIHRvIGNhbGwgc2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQs
IHRoZSBzdGF0aWMgdmFyaWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cu
Ci0gICAgQ0ZSZWxlYXNlKHRoZUhvc3QpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxh
dGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLQotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENG
SG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsK
LSAgICBpZiAoIWhvc3QpIHsKLSAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7
IDAsIDAsIDAsIDAsIDAgfTsKLSAgICBDRkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1Jl
ZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4K
LSAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRD
YWxsYmFjaywgJmNvbnRleHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwot
I2lmICFQTEFURk9STShXSU4pCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRI
b3N0LCBDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0jZWxzZQot
ICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9v
cCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCi0gICAgQ0ZI
b3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7Ci0jZW5kaWYKLSAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9u
KGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDApOwotfQotCi12b2lkIHByZWZldGNoRE5T
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZGFlZTY4OTQyMjAzN2U3Nzg0ZGQ4N2E3OTY4NzY0OWY1
ZmQ2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBDb2xsaW4gSmFja3NvbiAgPGNvbGxpbmpAd2Via2l0Lm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkxvYWRl
clJ1bkxvb3BDRi5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKElP
UykKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0Ojp1cGRhdGVJc1VzaW5nUHJv
eHkoKQoreworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBh
ZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOworICAgIGlmICghcHJv
eHlTZXR0aW5ncykgeworICAgICAgICBtX2lzVXNpbmdQcm94eSA9IGZhbHNlOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwo
UGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7Cisg
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywg
Imh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKworICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNG
b3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisgICAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVBy
b3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworCisg
ICAgQ0ZJbmRleCBodHRwUHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJh
eS5nZXQoKSk7CisgICAgQ0ZJbmRleCBodHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQo
aHR0cHNQcm94eUFycmF5LmdldCgpKTsKKyAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBD
RkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4o
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94
eVR5cGVLZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cFByb3h5Q291bnQgPSAw
OworICAgIGlmIChodHRwc1Byb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdl
dFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRl
eChodHRwc1Byb3h5QXJyYXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlU
eXBlTm9uZSkpCisgICAgICAgIGh0dHBzUHJveHlDb3VudCA9IDA7CisKKyAgICBtX2lzVXNpbmdQ
cm94eSA9IGh0dHBQcm94eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKK30KKworc3RhdGljIHZv
aWQgY2xpZW50Q2FsbGJhY2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25z
dCBDRlN0cmVhbUVycm9yKiwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0
b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRv
bigpIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJl
YWR5IGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93LgorICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFJldGFp
blB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhv
c3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBpZiAoIWhvc3QpIHsKKyAgICAg
ICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAgfTsKKyAgICBD
Rkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJl
IHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KKyAgICBCb29sZWFuIHJlc3VsdCA9IENG
SG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRleHQpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworI2lmICFQTEFURk9STShXSU4pCisgICAg
Q0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BHZXRNYWluKCks
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisjZWxzZQorICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1
biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50
Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChs
ZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisjZW5k
aWYKKyAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRy
ZXNzZXMsIDApOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpyZXNvbHZlKGNvbnN0
IFN0cmluZyYgLyogaG9zdG5hbWUgKi8sIHVpbnQ2NF90IC8qIGlkZW50aWZpZXIgKi8sIEROU0Nv
bXBsZXRpb25IYW5kbGVyJiYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29sdmUo
dWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jl
c29sdmVRdWV1ZUNGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcyNWNhNzFjYjc5MGQyOWUyMjQ4NmNi
NGFmMmFlNjhkZjc4MjA3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBETlNSZXNvbHZlUXVldWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgewor
cHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZvaWQg
cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlND
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90
IGlkZW50aWZpZXIpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVJc1VzaW5n
UHJveHkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0g
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQ7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9ETlNDdXJsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWEzMWY1OTg0YzBjZThlZmFlODk4MWQ5M2EyODMwY2EwNzFjYTBjNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJETlMuaCIKLSNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWUuaCIKLQotI2lmIFVTRShDVVJMKQotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6dXBk
YXRlSXNVc2luZ1Byb3h5KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERO
U1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUg
Ki8pCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIzMWE3Nzll
YTMyNjk1NjM5NGI1NjE4ZWRhNWRhZjEwMjBlYmU1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmNwcApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWVDdXJsLmgiCisKKyNpZiBVU0UoQ1VSTCkKKworI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBETlNSZXNvbHZlUXVldWVD
dXJsOjp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYg
LyogaG9zdG5hbWUgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNS
ZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9zdG5hbWUgKi8sIHVp
bnQ2NF90IC8qIGlkZW50aWZpZXIgKi8sIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgLyogY29tcGxl
dGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBETlNS
ZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZSh1aW50NjRfdCAvKiBpZGVudGlmaWVyICovKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yOGNhN2MxMmZjOGRjOTYxOTUyMjY5NTY3NmFiOTBkNDgyMDM4N2Uy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0ROU1Jlc29sdmVRdWV1ZUN1cmwuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVl
dWVDdXJsIGZpbmFsIDogcHVibGljIEROU1Jlc29sdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgRE5T
UmVzb2x2ZVF1ZXVlQ3VybCgpID0gZGVmYXVsdDsKKyAgICB2b2lkIHJlc29sdmUoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CisgICAgdm9pZCBzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKSBmaW5h
bDsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7
Cit9OworCit1c2luZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUN1
cmw7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTVhMDg0Nzg0OGI5
YzM1MDI0MDQ5NzdiZGMzYWEyMjQ5YTg3MWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0w
LDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZVNvdXAuaCIK
KworI2lmIFVTRShTT1VQKQorCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEluaXRpYWxseSB0
cnVlIHRvIGVuc3VyZSBwcmVmZXRjaCBzdGF5cyBkaXNhYmxlZCB1bnRpbCB3ZSBoYXZlIHByb3h5
IHNldHRpbmdzLgorc3RhdGljIGJvb2wgaXNVc2luZ0h0dHBQcm94eSA9IHRydWU7CitzdGF0aWMg
Ym9vbCBpc1VzaW5nSHR0cHNQcm94eSA9IHRydWU7CisKK3N0YXRpYyBib29sIGRpZFJlc29sdmVQ
cm94eShjaGFyKiogdXJpcykKK3sKKyAgICAvLyBXZSBoYXZlIGEgbGlzdCBvZiBwb3NzaWJsZSBw
cm94aWVzIHRvIHVzZSBmb3IgdGhlIFVSSS4gSWYgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3Qg
aXMKKyAgICAvLyBkaXJlY3Q6Ly8gKHRoZSB1c3VhbCBjYXNlKSwgdGhlbiB0aGUgdXNlciBwcmVm
ZXJzIG5vdCB0byB1c2UgYSBwcm94eS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgLy8gcmVzb2x2
aW5nIGhvc3RuYW1lczogdGhlcmUgY291bGQgYmUgbWFueSBwb3NzaWJpbGl0aWVzIHJldHVybmVk
IGluIG9yZGVyIG9mIHByZWZlcmVuY2UsIGFuZAorICAgIC8vIGlmIHdlJ3JlIHRyeWluZyB0byBj
b25uZWN0IHdlIHNob3VsZCBhdHRlbXB0IGVhY2ggb25lIGluIG9yZGVyLCBidXQgaGVyZSB3ZSBh
cmUgbm90IHRyeWluZworICAgIC8vIHRvIGNvbm5lY3QsIG1lcmVseSB0byBkZWNpZGUgd2hldGhl
ciBhIHByb3h5ICJzaG91bGQiIGJlIHVzZWQuCisgICAgcmV0dXJuIHVyaXMgJiYgKnVyaXMgJiYg
c3RyY21wKCp1cmlzLCAiZGlyZWN0Oi8vIik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlc29sdmVQ
cm94eShHUHJveHlSZXNvbHZlciogcmVzb2x2ZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBib29s
KiBpc1VzaW5nUHJveHlUeXBlLCBib29sKiBpc1VzaW5nUHJveHkpCit7CisgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOworICAgIEdVbmlxdWVQdHI8Y2hhcio+IHVyaXMoZ19wcm94eV9y
ZXNvbHZlcl9sb29rdXBfZmluaXNoKHJlc29sdmVyLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGRldGVybWlu
aW5nIHN5c3RlbSBwcm94eSBzZXR0aW5nczogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAqaXNVc2luZ1Byb3h5VHlwZSA9IGRpZFJlc29sdmVQcm94
eSh1cmlzLmdldCgpKTsKKyAgICAqaXNVc2luZ1Byb3h5ID0gaXNVc2luZ0h0dHBQcm94eSB8fCBp
c1VzaW5nSHR0cHNQcm94eTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cFByb3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEp
KTsKK30KKworc3RhdGljIHZvaWQgcHJveHlSZXNvbHZlZEZvckh0dHBzVXJpQ2FsbGJhY2soR09i
amVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAmaXNV
c2luZ0h0dHBzUHJveHksIHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSkpOworfQorCit2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCit7CisgICAgR1JlZlB0
cjxHUHJveHlSZXNvbHZlcj4gcmVzb2x2ZXI7CisgICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29y
a1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0
UHRyKCksIG51bGxwdHIpOworICAgIEFTU0VSVChyZXNvbHZlcik7CisKKyAgICBnX3Byb3h5X3Jl
c29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJv
eHkpOworICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlD
YWxsYmFjaywgJm1faXNVc2luZ1Byb3h5KTsKK30KKworc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxs
YmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKK3sKKyAgICBETlNSZXNvbHZlUXVldWU6
OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOworfQorCitzdGF0aWMgdm9pZCBy
ZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrKFNvdXBBZGRyZXNzKiBhZGRyZXNzLCBndWludCBz
dGF0dXMsIHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUKGRhdGEpOworICAgIGF1dG8qIHJlc29s
dmVRdWV1ZSA9IHN0YXRpY19jYXN0PEROU1Jlc29sdmVRdWV1ZVNvdXAqPihkYXRhKTsKKworICAg
IHVpbnQ2NF90IGlkZW50aWZpZXIgPSBHUE9JTlRFUl9UT19VSU5UKGdfb2JqZWN0X2dldF9kYXRh
KEdfT0JKRUNUKGFkZHJlc3MpLCAiaWRlbnRpZmllciIpKTsKKworICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSByZXNvbHZlUXVldWUtPmdldENvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIp
OworCisgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKHN0YXR1cyAhPSBTT1VQX1NUQVRVU19PSykgeworICAgICAgICBETlNFcnJvciBlcnJvciA9
IEROU0Vycm9yOjpVbmtub3duOworCisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAg
IGNhc2UgU09VUF9TVEFUVVNfQ0FOVF9SRVNPTFZFOgorICAgICAgICAgICAgZXJyb3IgPSBETlNF
cnJvcjo6Q2FudFJlc29sdmU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTT1VQ
X1NUQVRVU19DQU5DRUxMRUQ6CisgICAgICAgICAgICBlcnJvciA9IEROU0Vycm9yOjpDYW5jZWxs
ZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTT1VQX1NUQVRVU19PSzoKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9OworCisgICAgICAgICgqY29tcGxldGlvbkhhbmRsZXIpKG1ha2VVbmV4cGVjdGVkKGVycm9y
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNvdXBfYWRkcmVzc19pc19y
ZXNvbHZlZChhZGRyZXNzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFdlYkNvcmU6
OklQQWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KDEpOworICAgIGludCBsZW47CisgICAgYXV0byogaXBBZGRyZXNzID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihzb3VwX2FkZHJlc3NfZ2V0X3NvY2thZGRy
KGFkZHJlc3MsICZsZW4pKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKCpp
cEFkZHJlc3MpIC8gbGVuOyBpKyspCisgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNrZWRBcHBlbmQo
V2ViQ29yZTo6SVBBZGRyZXNzKGlwQWRkcmVzc1tpXSkpOworCisgICAgKCpjb21wbGV0aW9uSGFu
ZGxlcikoeyBhZGRyZXNzZXMgfSk7CisKKyAgICByZXNvbHZlUXVldWUtPnJlbW92ZUNhbmNlbEFu
ZENvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIpOworfQorCitjb25zdCBXZWJDb3JlOjpETlND
b21wbGV0aW9uSGFuZGxlciogRE5TUmVzb2x2ZVF1ZXVlU291cDo6Z2V0Q29tcGxldGlvbkhhbmRs
ZXIodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgYXV0byBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSBtX2NvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGNvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycyA9PSBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gJmNvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycy0+dmFsdWUuZmlyc3Q7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVt
b3ZlQ2FuY2VsQW5kQ29tcGxldGlvbkhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlcnMucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6
OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fcHJlZmV0Y2hfZG5zKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0
d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBudWxs
cHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVl
dWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZp
ZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gYWRkcmVzcyA9IGFkb3B0R1JlZihzb3Vw
X2FkZHJlc3NfbmV3KGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIDApKTsKKyAgICBhdXRvIGNhbmNl
bGxhYmxlID0gYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpOworICAgIHNvdXBfYWRkcmVz
c19yZXNvbHZlX2FzeW5jKGFkZHJlc3MuZ2V0KCksIHNvdXBfc2Vzc2lvbl9nZXRfYXN5bmNfY29u
dGV4dChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpLmdldE9yQ3JlYXRlU291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSksIGNhbmNl
bGxhYmxlLmdldCgpLCByZXNvbHZlZFdpdGhPYnNlcnZlckNhbGxiYWNrLCB0aGlzKTsKKworICAg
IGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGFkZHJlc3MuZ2V0KCkpLCAiaWRlbnRpZmllciIs
IEdVSU5UX1RPX1BPSU5URVIoaWRlbnRpZmllcikpOworCisgICAgbV9jb21wbGV0aW9uQW5kQ2Fu
Y2VsSGFuZGxlcnMuYWRkKGlkZW50aWZpZXIsIGNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShjYW5jZWxsYWJsZSkpKTsKK30KKwor
dm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGNvbXBsZXRpb25B
bmRDYW5jZWxIYW5kbGVyID0gbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuZmluZChpZGVu
dGlmaWVyKTsKKworICAgIGlmIChjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlciAhPSBtX2NvbXBs
ZXRpb25BbmRDYW5jZWxIYW5kbGVycy5lbmQoKSkgeworICAgICAgICBnX2NhbmNlbGxhYmxlX2Nh
bmNlbChjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlci0+dmFsdWUuc2Vjb25kLmdldCgpKTsKKyAg
ICAgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMucmVtb3ZlKGlkZW50aWZpZXIpOwor
ICAgIH0KK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1
MDU3NTkwYzJhNGUzODJiOGVmMWJkZmQzMDVhYTllOThmOWY1MzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291
cC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgorCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlU291cCBmaW5hbCA6IHB1
YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZVNvdXAo
KSA9IGRlZmF1bHQ7CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZv
aWQgc3RvcFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikgZmluYWw7CisKKyAgICBjb25zdCBX
ZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciogZ2V0Q29tcGxldGlvbkhhbmRsZXIodWludDY0
X3QgaWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmVDYW5jZWxBbmRDb21wbGV0aW9uSGFuZGxl
cih1aW50NjRfdCBpZGVudGlmaWVyKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgdXBkYXRlSXNV
c2luZ1Byb3h5KCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgY29tcGxldGlvbkFuZENh
bmNlbEhhbmRsZXJzID0gc3RkOjpwYWlyPFdlYkNvcmU6OkROU0NvbXBsZXRpb25IYW5kbGVyLCBH
UmVmUHRyPEdDYW5jZWxsYWJsZT4+OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgY29tcGxldGlv
bkFuZENhbmNlbEhhbmRsZXJzPiBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVyczsKKworICAg
IHZvaWQgcGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworfTsKKwordXNpbmcg
RE5TUmVzb2x2ZVF1ZXVlUGxhdGZvcm0gPSBETlNSZXNvbHZlUXVldWVTb3VwOworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMTE0NTdkZGQyMjMzYzc0M2ExOGNkZjgzODM2OTBm
ZjhmNjM5NTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiBJ
Z2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE5TLmgiCi0jaW5j
bHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpZiBVU0UoU09VUCkKLQotI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgotI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgot
I2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0j
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBJbml0aWFsbHkgdHJ1ZSB0byBlbnN1
cmUgcHJlZmV0Y2ggc3RheXMgZGlzYWJsZWQgdW50aWwgd2UgaGF2ZSBwcm94eSBzZXR0aW5ncy4K
LXN0YXRpYyBib29sIGlzVXNpbmdIdHRwUHJveHkgPSB0cnVlOwotc3RhdGljIGJvb2wgaXNVc2lu
Z0h0dHBzUHJveHkgPSB0cnVlOwotCi1zdGF0aWMgYm9vbCBkaWRSZXNvbHZlUHJveHkoY2hhcioq
IHVyaXMpCi17Ci0gICAgLy8gV2UgaGF2ZSBhIGxpc3Qgb2YgcG9zc2libGUgcHJveGllcyB0byB1
c2UgZm9yIHRoZSBVUkkuIElmIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0IGlzCi0gICAgLy8g
ZGlyZWN0Oi8vICh0aGUgdXN1YWwgY2FzZSksIHRoZW4gdGhlIHVzZXIgcHJlZmVycyBub3QgdG8g
dXNlIGEgcHJveHkuIFRoaXMgaXMgc2ltaWxhciB0bwotICAgIC8vIHJlc29sdmluZyBob3N0bmFt
ZXM6IHRoZXJlIGNvdWxkIGJlIG1hbnkgcG9zc2liaWxpdGllcyByZXR1cm5lZCBpbiBvcmRlciBv
ZiBwcmVmZXJlbmNlLCBhbmQKLSAgICAvLyBpZiB3ZSdyZSB0cnlpbmcgdG8gY29ubmVjdCB3ZSBz
aG91bGQgYXR0ZW1wdCBlYWNoIG9uZSBpbiBvcmRlciwgYnV0IGhlcmUgd2UgYXJlIG5vdCB0cnlp
bmcKLSAgICAvLyB0byBjb25uZWN0LCBtZXJlbHkgdG8gZGVjaWRlIHdoZXRoZXIgYSBwcm94eSAi
c2hvdWxkIiBiZSB1c2VkLgotICAgIHJldHVybiB1cmlzICYmICp1cmlzICYmIHN0cmNtcCgqdXJp
cywgImRpcmVjdDovLyIpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRSZXNvbHZlUHJveHkoR1Byb3h5
UmVzb2x2ZXIqIHJlc29sdmVyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgYm9vbCogaXNVc2luZ1By
b3h5VHlwZSwgYm9vbCogaXNVc2luZ1Byb3h5KQotewotICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKLSAgICBHVW5pcXVlUHRyPGNoYXIqPiB1cmlzKGdfcHJveHlfcmVzb2x2ZXJfbG9v
a3VwX2ZpbmlzaChyZXNvbHZlciwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKLSAgICBpZiAo
ZXJyb3IpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBkZXRlcm1pbmluZyBzeXN0ZW0g
cHJveHkgc2V0dGluZ3M6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgKmlzVXNpbmdQcm94eVR5cGUgPSBkaWRSZXNvbHZlUHJveHkodXJpcy5nZXQo
KSk7Ci0gICAgKmlzVXNpbmdQcm94eSA9IGlzVXNpbmdIdHRwUHJveHkgfHwgaXNVc2luZ0h0dHBz
UHJveHk7Ci19Ci0KLXN0YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2so
R09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCi17
Ci0gICAgZGlkUmVzb2x2ZVByb3h5KEdfUFJPWFlfUkVTT0xWRVIoc291cmNlKSwgcmVzdWx0LCAm
aXNVc2luZ0h0dHBQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRhKSk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHByb3h5UmVzb2x2ZWRGb3JIdHRwc1VyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJj
ZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAgIGRpZFJlc29s
dmVQcm94eShHX1BST1hZX1JFU09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwc1By
b3h5LCBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpKTsKLX0KLQotdm9pZCBETlNSZXNvbHZl
UXVldWU6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgR1JlZlB0cjxHUHJveHlSZXNvbHZl
cj4gcmVzb2x2ZXI7Ci0gICAgZ19vYmplY3RfZ2V0KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3Vw
U2Vzc2lvbigpLCAicHJveHktcmVzb2x2ZXIiLCAmcmVzb2x2ZXIub3V0UHRyKCksIG51bGxwdHIp
OwotICAgIEFTU0VSVChyZXNvbHZlcik7Ci0KLSAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9h
c3luYyhyZXNvbHZlci5nZXQoKSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBudWxscHRyLCBwcm94
eVJlc29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOwotICAgIGdfcHJv
eHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cHM6Ly9leGFtcGxl
LmNvbS8iLCBudWxscHRyLCBwcm94eVJlc29sdmVkRm9ySHR0cHNVcmlDYWxsYmFjaywgJm1faXNV
c2luZ1Byb3h5KTsKLX0KLQotc3RhdGljIHZvaWQgcmVzb2x2ZWRDYWxsYmFjayhTb3VwQWRkcmVz
cyosIGd1aW50LCB2b2lkKikKLXsKLSAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmRl
Y3JlbWVudFJlcXVlc3RDb3VudCgpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZv
cm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLQotICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0ZVNvdXBOZXR3b3JrU2Vz
c2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIHJl
c29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAo
aG9zdG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBETlNSZXNvbHZlUXVl
dWU6OnNpbmdsZXRvbigpLmFkZChob3N0bmFtZSk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmNwcAppbmRleCBhNTIwNDA0NWRjNzIxM2EyZjAxZjJhMTQwN2MwZjBiY2NmMjM3MjEy
Li4yZmYxZTY5ZGVhOWYwMTVlNDMyNjc2N2FiMjEwZDc2ZTgzYjgyOGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5jcHAKQEAgLTQwLDYgKzQwLDEwIEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6VGhyZWFkPiBj
cmVhdGVUaHJlYWQoKQpAQCAtMTYyLDE1ICsxNjYsMjIgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlk
ZXI6OmRpZFJlY2VpdmVOZXR3b3JrUlRDU29ja2V0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm4KICAgICBOZXR3b3JrUlRDU29ja2V0KGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCAqdGhpcyku
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKKwogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2
NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcykKIHsKLSAgICBhdXRvIHJlc29s
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUlRDUmVzb2x2ZXI+KFt0aGlzLCBpZGVudGlm
aWVyXShOZXR3b3JrUlRDUmVzb2x2ZXI6OkFkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFi
bGUgeworICAgIGF1dG8gcmVzb2x2ZXIgPSBOZXR3b3JrUlRDUmVzb2x2ZXI6OmNyZWF0ZShpZGVu
dGlmaWVyLCBbdGhpcywgaWRlbnRpZmllcl0oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYm
IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7Ci0g
ICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKCkgIT0gTmV0d29ya1JUQ1Jlc29sdmVyOjpFcnJv
cjo6Q2FuY2VsbGVkKQorICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IFdlYkNvcmU6
OkROU0Vycm9yOjpDYW5jZWxsZWQpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vy
cm9yKDEpLCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSVENSZXNv
bHZlcjo6U2V0UmVzb2x2ZWRBZGRyZXNzKHJlc3VsdC52YWx1ZSgpKSwgaWRlbnRpZmllcik7CisK
KyAgICAgICAgYXV0byBhZGRyZXNzZXMgPSBXVEY6Om1hcChyZXN1bHQudmFsdWUoKS5nZXQoKSwg
W10gKGF1dG8mIGFkZHJlc3MpIHsKKyAgICAgICAgICAgIHJldHVybiBSVENOZXR3b3JrOjpJUEFk
ZHJlc3MgeyBydGM6OklQQWRkcmVzcyB7IGFkZHJlc3MuZ2V0U2luQWRkcigpIH0gfTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlm
aWVyKTsKICAgICB9KTsKICAgICByZXNvbHZlci0+c3RhcnQoYWRkcmVzcyk7CiAgICAgbV9yZXNv
bHZlcnMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUocmVzb2x2ZXIpKTsKQEAgLTE4Miw2ICsxOTMs
MzQgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OnN0b3BSZXNvbHZlcih1aW50NjRfdCBpZGVu
dGlmaWVyKQogICAgICAgICByZXNvbHZlci0+c3RvcCgpOwogfQogCisjZWxzZQorCit2b2lkIE5l
dHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBhZGRyZXNzKQoreworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhp
cywgaWRlbnRpZmllcl0oV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICBp
ZiAocmVzdWx0LmVycm9yKCkgIT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCkKKyAgICAg
ICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJS
VENSZXNvbHZlcjo6UmVzb2x2ZWRBZGRyZXNzRXJyb3IoMSksIGlkZW50aWZpZXIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBhZGRyZXNzZXMgPSBXVEY6
Om1hcChyZXN1bHQudmFsdWUoKS5nZXQoKSwgW10gKGF1dG8mIGFkZHJlc3MpIHsKKyAgICAgICAg
ICAgIHJldHVybiBSVENOZXR3b3JrOjpJUEFkZHJlc3MgeyBydGM6OklQQWRkcmVzcyB7IGFkZHJl
c3MuZ2V0U2luQWRkcigpIH0gfTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVk
QWRkcmVzcyhhZGRyZXNzZXMpLCBpZGVudGlmaWVyKTsKKyAgICB9OworCisgICAgV2ViQ29yZTo6
cmVzb2x2ZUROUyhhZGRyZXNzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpzdG9wUmVzb2x2ZXIodWludDY0X3Qg
aWRlbnRpZmllcikKK3sKKyAgICBXZWJDb3JlOjpzdG9wUmVzb2x2ZUROUyhpZGVudGlmaWVyKTsK
K30KKworI2VuZGlmCisKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjbG9zZUxpc3RlbmluZ1Nv
Y2tldHMoRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
bV9pc0xpc3RlbmluZ1NvY2tldEF1dGhvcml6ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCmluZGV4
IDNjOTk4N2QwNDgwOGYzYTcxODU3NzMxMWY5ZTVjYjE2YzNmZjAxNmUuLjBhOGNhNGU0ZTY4YzQx
ZTMxMDdkMjQ4NGJiNjdiY2Y2MWU3MGM5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmNwcApAQCAtMzIs
NjggKzMyLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCByZXNvbHZl
ZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdEluZm9UeXBlIHR5cGVJbmZvLCBjb25zdCBD
RlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykKKy8vIEZJWE1FOiBVc2UgdGhlIGZ1bmN0
aW9uIGFmdGVyIHJlbW92aW5nIHRoZSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS4KKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29sdmVyPiBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OmNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9VTlVTRUQo
dHlwZUluZm8sICF0eXBlSW5mbyk7Ci0KLSAgICBpZiAoZXJyb3ItPmRvbWFpbikgewotICAgICAg
ICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMgbm90IHByb3Zp
ZGVkIGluIHRoZSBjYWxsYmFjay4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VChpbmZvKTsKLSAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5ldHdvcmtSVENSZXNv
bHZlcio+KGluZm8pOwotCi0gICAgQm9vbGVhbiByZXN1bHQ7Ci0gICAgQ0ZBcnJheVJlZiByZXNv
bHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwg
JnJlc3VsdCk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Ci0KLSAgICBzaXpl
X3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOwotICAgIFZlY3Rv
cjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKLSAgICBhZGRyZXNzZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRh
UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKLSAg
ICAgICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gICAgICAgIGFkZHJlc3Nlcy51bmNo
ZWNrZWRBcHBlbmQoUlRDTmV0d29yazo6SVBBZGRyZXNzKHJ0Yzo6SVBBZGRyZXNzKGFkZHJlc3Mt
PnNpbl9hZGRyKSkpOwotICAgIH0KLSAgICByZXNvbHZlci0+Y29tcGxldGVkKGFkZHJlc3Nlcyk7
CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVzb2x2ZXI+KG5ldyBOZXR3
b3JrUlRDUmVzb2x2ZXIoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsK
IH0KKyNlbmRpZgogCi1OZXR3b3JrUlRDUmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcihDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgIDogbV9jb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKK05ldHdvcmtSVENSZXNvbHZlcjo6TmV0
d29ya1JUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OkROU0NvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKKyAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpCiB7CiB9CiAKIE5ldHdvcmtSVENSZXNvbHZlcjo6fk5ldHdvcmtSVENSZXNvbHZlcigpCiB7
Ci0gICAgQ0ZIb3N0VW5zY2hlZHVsZUZyb21SdW5Mb29wKG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIENGSG9zdFNldENsaWVu
dChtX2hvc3QuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OlVua25vd24p
KTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYgYWRk
cmVzcykKIHsKLSAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAgIENG
SG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciB9OwotICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVkTmFt
ZSwgJmNvbnRleHQpOwotICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0LmdldCgp
LCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgQm9v
bGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwga0NG
SG9zdEFkZHJlc3NlcywgbnVsbHB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7CisgICAgV2ViQ29yZTo6cmVzb2x2ZUROUyhhZGRyZXNzLCBtX2lkZW50aWZpZXIsIFdURk1v
dmUobV9jb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6
c3RvcCgpCiB7Ci0gICAgQ0ZIb3N0Q2FuY2VsSW5mb1Jlc29sdXRpb24obV9ob3N0LmdldCgpLCBD
Rkhvc3RJbmZvVHlwZTo6a0NGSG9zdEFkZHJlc3Nlcyk7Ci0gICAgaWYgKGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChFcnJvcjo6Q2FuY2VsbGVkKSk7Ci19Ci0KLXZvaWQg
TmV0d29ya1JUQ1Jlc29sdmVyOjpjb21wbGV0ZWQoY29uc3QgVmVjdG9yPFJUQ05ldHdvcms6OklQ
QWRkcmVzcz4mIGFkZHJlc3NlcykKLXsKLSAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgYWRkcmVzc2VzIH0pOworICAgIFdlYkNvcmU6OnN0b3BSZXNvbHZlRE5TKG1faWRlbnRpZmll
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAppbmRleCAxYmNm
NzM2ZTc2N2E2NzA0YjVjZTk3Y2RhOGM3MjNiZGUzNWU3Mjc4Li4zOGU1Zjc2MjcyYzU4MDJiY2Iw
M2VhYjczNjQxODAwNjQ5OTY1M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaApAQCAtMjgsNyArMjgsNyBA
QAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCi0jaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTM2LDIyICszNiwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0
d29ya1JUQ1Jlc29sdmVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsgVW5rbm93
biwgQ2FuY2VsbGVkIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUlRDUmVz
b2x2ZXI+IGNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9u
SGFuZGxlciYmKTsKIAotICAgIHVzaW5nIEFkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZlY3RvcjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+Piwg
RXJyb3I+OwotICAgIHVzaW5nIENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEFkZHJlc3Nlc09yRXJyb3ImJik+OworICAgIE5ldHdvcmtSVENSZXNvbHZlcih1
aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAg
ICB2aXJ0dWFsIH5OZXR3b3JrUlRDUmVzb2x2ZXIoKTsKIAotICAgIGV4cGxpY2l0IE5ldHdvcmtS
VENSZXNvbHZlcihDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB+TmV0d29ya1JUQ1Jlc29sdmVy
KCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcyk7CisgICAg
dmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgU3RyaW5nJiBhZGRy
ZXNzKTsKLSAgICB2b2lkIHN0b3AoKTsKLQotICAgIHZvaWQgY29tcGxldGVkKGNvbnN0IFZlY3Rv
cjxSVENOZXR3b3JrOjpJUEFkZHJlc3M+Jik7Ci0KLXByaXZhdGU6Ci0gICAgQ29tcGxldGlvbkhh
bmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBtX2hv
c3Q7Citwcm90ZWN0ZWQ6CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6
OkROU0NvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MWZkYjU1NTI3OWViZTBiMjIxNzFlNTJlYzAwNzE2NTk4YjE1OTk1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNvbHZlckNvY29hLmgiCisKKyNpZiBVU0UoTElC
V0VCUlRDKQorCisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGF0aWMgdm9pZCByZXNvbHZlZE5hbWUoQ0ZIb3N0UmVmIGhvc3RSZWYsIENGSG9zdElu
Zm9UeXBlIHR5cGVJbmZvLCBjb25zdCBDRlN0cmVhbUVycm9yICplcnJvciwgdm9pZCAqaW5mbykK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOworCisgICAgQVNTRVJU
KGluZm8pOworICAgIGF1dG8qIHJlc29sdmVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EqPihpbmZvKTsKKworICAgIGlmIChlcnJvci0+ZG9tYWluKSB7CisgICAgICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGhhbmRsZSBmYWlsdXJlLCBidXQgaW5mbyBpcyBub3QgcHJvdmlkZWQg
aW4gdGhlIGNhbGxiYWNrLgorICAgICAgICByZXNvbHZlci0+Y29tcGxldGVkKG1ha2VVbmV4cGVj
dGVkKFdlYkNvcmU6OkROU0Vycm9yOjpVbmtub3duKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBCb29sZWFuIHJlc3VsdDsKKyAgICBDRkFycmF5UmVmIHJlc29sdmVkQWRkcmVzc2Vz
ID0gKENGQXJyYXlSZWYpQ0ZIb3N0R2V0QWRkcmVzc2luZyhob3N0UmVmLCAmcmVzdWx0KTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKworICAgIHNpemVfdCBjb3VudCA9IENG
QXJyYXlHZXRDb3VudChyZXNvbHZlZEFkZHJlc3Nlcyk7CisgICAgVmVjdG9yPFdlYkNvcmU6OklQ
QWRkcmVzcz4gYWRkcmVzc2VzOworICAgIGFkZHJlc3Nlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGNvdW50KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytp
bmRleCkgeworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IChDRkRhdGFSZWYpQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChyZXNvbHZlZEFkZHJlc3NlcywgaW5kZXgpOworICAgICAgICBhdXRvKiBhZGRy
ZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qPihDRkRhdGFH
ZXRCeXRlUHRyKGRhdGEpKTsKKyAgICAgICAgYWRkcmVzc2VzLnVuY2hlY2tlZEFwcGVuZChXZWJD
b3JlOjpJUEFkZHJlc3MoKmFkZHJlc3MpKTsKKyAgICB9CisgICAgcmVzb2x2ZXItPmNvbXBsZXRl
ZCh7IGFkZHJlc3NlcyB9KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZl
cj4gTmV0d29ya1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29y
ZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4obmV3IE5ldHdvcmtSVENSZXNv
bHZlckNvY29hKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7Cit9CisK
K05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYSh1aW50NjRf
dCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYTo6fk5ldHdv
cmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNjaGVkdWxlRnJvbVJ1bkxvb3Ao
bV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7
Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0YXJ0KGNvbnN0IFN0cmluZyYg
YWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAg
IENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hvc3QuZ2V0KCksIHJlc29sdmVk
TmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0aFJ1bkxvb3AobV9ob3N0Lmdl
dCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAg
Qm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwg
a0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0b3AoKQoreworICAg
IENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6
OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCkpOworfQorCit2b2lkIE5l
dHdvcmtSVENSZXNvbHZlckNvY29hOjpjb21wbGV0ZWQoV2ViQ29yZTo6RE5TQWRkcmVzc2VzT3JF
cnJvciYmIGFkZHJlc3Nlc09yRXJyb3IpCit7CisgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGFkZHJlc3Nlc09yRXJyb3IpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTg0MTk4ZDE2YTAxMmY0MWIzYTFhYzdlN2E1ZWFhZTNiM2NkYjQwZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIk5ldHdvcmtSVENSZXNv
bHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIHdoZW4gd2UgY29tcGxldGUgdGhl
IGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlNSZXNvbHZlUXVldWVDRk5ldC4KK2NsYXNzIE5ldHdv
cmtSVENSZXNvbHZlckNvY29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtSVENSZXNvbHZlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EodWludDY0X3QgaWRl
bnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgfk5ldHdvcmtS
VENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0YXJ0KGNvbnN0IFN0cmluZyYg
YWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyAgICB2b2lkIGNvbXBs
ZXRlZChXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYpOworCitwcml2YXRlOgorICAgIFJl
dGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE4YTkxOGZiMmNhYzg0ZTVmYTRiNWUyZDcyOWYx
NmM3YjZkYTFiZWQuLjhhYzU2YTBkMTA1ZWE5MDdjMjNkYjJmNzhkZDMxZTM1YThiNmM3YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTE1LDYgKzkxNSw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYwMDZEMCAvKiBSVENOZXR3b3Jr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4
MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAqLzsgfTsKIAkJNDEwNDgyQ0Ux
REREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3
b3JrLmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi87IH07
CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEyQjU0
NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovOyB9Owog
CQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExQjIyNjIxRTM3MTI0NDAw
NEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJNDEzMDc1QTkxREU4NUYyQzAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtS
VENTb2NrZXQuY3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMwMDAzOUVDNjkgLyogTmV0d29y
a1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzMDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdvcmtSVENNb25pdG9yLmNwcCAq
LzsgfTsKQEAgLTMyODcsNiArMzI4OCw4IEBACiAJCTQxMDQ4MkNDMURERDJGQjUwMEYwMDZEMCAv
KiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ05ldHdv
cmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1NDcxRjlGRDNBQjAwRTY3
ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzk4NiAvKiBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBO
ZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2MjFFMzcxMjQ0MDA0RjczNjMg
LyogTGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
aWJXZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3Jr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2
OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTMw
NzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjIzNiw2ICs2MjM5LDggQEAKIAkJCQk0MURDNDU5ODFFM0Q2RUQ2MDBCMTFGNTEgLyog
TmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTQxMTJCNTQ3MUY5RkQzQUIw
MEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAogCQkJCTQxMTJCNTQ4MUY5RkQz
QUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywKKwkJCQk0MTEyQjU0NzFGOUZE
M0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwICovLAorCQkJCTQxMTJC
NTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oICovLAogCQkJ
CTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLywKIAkJ
CQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5oICovLAogCQkJ
CTQxMzA3NTlEMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0Lm1lc3NhZ2VzLmlu
ICovLApAQCAtMTA2MjEsNiArMTA2MjYsNyBAQAogCQkJCTQxREM0NTk3MUUzRDZFMjIwMEIxMUY1
MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTEx
NjU0MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBFNjc4NzUgLyogTmV0d29ya1JU
Q1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4
NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMw
NzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0d29ya1JUQ1NvY2tldE1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4
RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWY3OGY2YTk5ZjNj
N2JlZTRmMWM1NDY3MjM2MTY2MmNkZDFkMjViMS4uOTc2YTcyNDY4N2E3YTIxNjlmMzE1ZTYxNjc2
YTE3ZjYxNTMwY2JjMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAyLTE5ICBBbGVqYW5kcm8gRy4gQ2FzdHJv
ICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29ya1JUQ1Jlc29sdmVyIHBv
cnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIG5ldyB1bml0IHRlc3RzIGZvciBoZSByZXNvbHZlIGFuZCBzdG9wUmVzb2x2ZSBm
dW5jdGlvbnMuIFdlIG5lZWQgdG8gY29tcGlsZSB0aGVtIGZvciB0aGUKKyAgICAgICAgb3RoZXIg
cGxhdGZvcm1zIHdoZW4gdGhlIEFQSXMgYXJlIHN1cHBvcnRlZC4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0ROUy5jcHA6CisKIDIwMTgtMDMtMDYgIERvbWluaWsgSW5mdWVociAgPGRpbmZ1
ZWhyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0FSTV0gRGlzYWJsZSB0ZXN0cyB0aGF0IHJ1biBv
dXQgb2YgbWVtb3J5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA0YWVm
Njk1M2NkMTYxNGJmNmNmMDNjZTIyNDhhZmIzYzZkMmRlNWY4Li42MjAyZjQ2YmFmMGIzMzc4NWM4
NWNhZDcyYzZiMjgzM2JlODg3ZDQzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21h
a2UKQEAgLTg3LDYgKzg3LDcgQEAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYkNvcmUKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV2ViQ29yZS9DU1NQYXJzZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS9ETlMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV2ViQ29yZS9HcmlkUG9zaXRpb24uY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9ETlMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYjdlNTkzMDMyZjA4M2FjZTQ5ZTJlYTM2ZmEy
ZGJmNWU1ZGQ4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRE5TLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV1RGU3Ry
aW5nVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ROUy5oPgorI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK2Jvb2wgZG9uZSA9IGZhbHNlOworCitURVNUKEROU1Rlc3Qs
IGNhbmNlbFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29w
KCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53ZWJraXQub3Jn
Iik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3Im
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NF
UlRfRkFMU0UocmVzdWx0Lmhhc192YWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocmVzdWx0
LmVycm9yKCkgPT0gV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxlZCk7CisKKyAgICAgICAgcmV0
dXJuOworICAgIH07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcmVzb2x2ZUROUyhob3N0bmFt
ZSwgaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHN0b3BSZXNv
bHZlRE5TKGlkZW50aWZpZXIpOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoRE5T
VGVzdCwgY2FudFJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5M
b29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoIm5vdGF2YWxpZGRv
bWFpbi5ub3RhdmFsaWRkb21haW4iKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKwor
ICAgIEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6
RE5TQWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0
cnVlOworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FudFJl
c29sdmUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKEROU1Rlc3QsIHJlc29s
dmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBj
b25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53ZWJraXQub3JnIik7CisgICAgdWlu
dDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0
aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11
dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfVFJVRShyZXN1
bHQuaGFzX3ZhbHVlKCkpOworCisgICAgICAgIHJldHVybjsKKyAgICB9OworCisgICAgZG9uZSA9
IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335187</attachid>
            <date>2018-03-07 05:37:29 -0800</date>
            <delta_ts>2018-03-07 05:55:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180307143726.patch</filename>
            <type>text/plain</type>
            <size>83602</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM0ZjI5MDk3OGQyMzE2
MmNkZWVmYjdlODYzNjZhMjNjYTQ2NjRjNC4uNWYzZTJjYjVlYmZiMzg1MmRlODhhMjAwMTZmZWIx
MDI3NTkxYWNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAzLTA3ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBG
YWJsZXQuCisKKyAgICAgICAgQWRkIG5ldyBBUEkgaW4gdGhlIEROU1Jlc29sdmVRdWV1ZSBhbGxv
d2luZyB0byByZXZvbHZlIGhvc3RuYW1lcyBhbmQgZ2V0IHRoZSByZXN1bHQuIEFkZCBwbGF0Zm9y
bQorICAgICAgICBzcGVjaWZpYyBjb2RlIGZvciBzb3VwIHBsYXRmb3JtIGFuZCByZWZhY3RvciB0
aGUgb3RoZXIgcGxhdGZvcm1zLiBBZGRlZCBuZXcgQVBJIHRvIHRoZSBETlMgQVBJIGhlYWRlcgor
ICAgICAgICBhbmQgbW92ZSB0aGUgZ2VuZXJhbCBjb2RlIHRvIHRoZSBETlMuY3BwIGZpbGUsIHRo
YXQgd2F5IHdlIGNhbiByZXVzZSB0aGF0IGNvZGUgaW4gYWxsIHRoZSBwbGF0Zm9ybXMKKyAgICAg
ICAgYW5kIGxlYXZlIHRoZSBSZXNvbHZlUXVldWUgY2xhc3Mgb2YgdGhlIHBsYXRmb3JtcyBpbiBh
IGZpbGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9y
LgorCisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZTogTW92ZSB0aGUgRE5TQ0ZOZXQg
Y2xhc3MgdG8gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGQgdGhlIEROUy5jcHAgZm9yIGNv
bXBpbGF0aW9uLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLCByZXNvbHZlcyBhIGhvc3RuYW1l
LCByZWNlaXZlcyB0aGUgaWRlbnRpZmllciBvZiB0aGUgb3BlcmF0aW9uCisgICAgICAgIGFuZCB0
aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6c3RvcFJlc29sdmVETlMp
OiBBZGQgdGhlIGZ1bmN0aW9uLCBzdG9wcyBhIHJlc29sdXRpb24gb3BlcmF0aW9uLCByZWNlaXZl
cyB0aGUgaWRlbnRpZmllcgorICAgICAgICBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3Rv
cFJlc29sdmVETlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0
aGlzIGNsYXNzIHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwg
aXQgZG9lcworICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBz
dHJ1Y3Qgc29ja2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNv
cmU6OkROU0NvbXBsZXRpb25IYW5kbGVyKTogQWRkIHRoaXMgQ29tcGxldGlvbkhhbmRsZXIgdHlw
ZSB0byBiZSB1c2VkIHdoZW4gcmVzb2x2aW5nIHRoZSBETlMKKyAgICAgICAgYWRkcmVzcy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5T
UmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhlIHNpbmdsZXRvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKTogVXNlIEROU1Jlc29s
dmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhlIHNpbmdsZXRvbi4uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUpOiBBZGQgdGhpcyBtZXRo
b2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNlbmRzIHRoZQorICAgICAg
ICBpZGVudGlmaWVyIGFuZCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIHVzZSB3aGVuIHJldHVy
bmluZyB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpzdG9w
UmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB3
aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
Lmg6IEFkZCB0aGUgbmV3IG1ldGhvZHMgYW5kIG1ha2UgdGhlIGNsYXNzIGFic3RyYWN0LCBzbyB0
aGF0IGV2ZXJ5CisgICAgICAgIHBsYXRmb3JtIGNhbiBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9ucy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQu
Y3BwLgorICAgICAgICBBZGQgdGhlIG1ldGhvZHMgdG8gdGhlIG5ldyBjbGFzcyBETlNSZXNvbHZl
UXVldWVDRk5ldCwgbW92ZSB0aGUgcHJlZmV0Y2hETlMgdG8gdGhlIEROUy5jcHAgZ2VuZXJhbAor
ICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0Lmg6IEFkZCB0aGUgbmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0
aGUgRE5TUmVzb2x2ZVF1ZXVlLiBBZGQgdGhlCisgICAgICAgIG5ldyBtZXRob2RzLCB3ZSBoYXZl
IHRvIGltcGxlbWVudCB0aGVzZSBtZXRob2RzIGFuZCBtb3ZlIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXIgZm9yIENPQ09BIGNvZGUgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZUNGOjpyZXNvbHZlKTogRHVtbXkgbWV0aG9kLCBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRjo6c3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaDogQWRk
IHRoZSBuZXcgY2xhc3MgaW5oZXJpdGluZyBmcm9tIHRoZSBETlNSZXNvbHZlUXVldWUuCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmg6IE5l
dyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZSBjbGFzcywgYWRkaW5n
CisgICAgICAgIGEgSGFzTWFwIHdpdGggdGhlIGFjdGl2ZSBvcGVyYXRpb25zLCBpdCBhbGxvd3Mg
c3RvcHBpbmcgdGhlbS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2
ZVF1ZXVlU291cC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRE5TU291cC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlZFdpdGhPYnNl
cnZlckNhbGxiYWNrKTogQ2FsbGVkIHdoZW4gdGhlIHJlc3VsdCBhZGRyZXNzIGZyb20gdGhlIHNv
dXAgcGxhdGZvcm0gaXMgcmVhZHksCisgICAgICAgIHNlbmRzIHRoZSBhZGRyZXNzIHRvIHRoZSBj
b21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3Vw
OjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB3aXRoIHRoZSBzb3VwIGxp
YnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpzdG9wUmVzb2x2
ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nlc3Mgd2l0aCBhIEdDYW5jZWxs
YWJsZS4KKwogMjAxOC0wMy0wNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0Nvb3JkR3JhcGhpY3NdIFJlbW92ZSB1bnVzZWQgc2Nyb2xsaW5nLXJlbGF0
ZWQgY29kZSBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIsIENvb3JkaW5hdGVkR3JhcGhpY3Mgc3RhY2sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODQxM2Y4NzlhMzI1NDIzZTYwMGJjMmFkYzQ0NWQ3YTJjNmI4M2Y1Ni4uZmY5
Y2FiZDBlOTZkZWE5MTUwOGYzY2RmNzc3MDgxZDlkNDkwYzJhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNSBAQAorMjAxOC0wMy0wNyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNv
bT4KKworICAgICAgICBNYWtlIE5ldHdvcmtSVENSZXNvbHZlciBwb3J0IGFnbm9zdGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNp
ZmljIENvY29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBj
bGFzcywgbWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGlj
IGFuZCBkZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNo
IGVuY2Fwc3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4g
YWxpYXMgY2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUg
cmVzb2x2ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVz
b2x2ZXIpOiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRk
cmVzcyBjbGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0
YyBsaWJyYXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5T
IEFQSSB0byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4g
dGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9m
IHRoZSByZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVy
IGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29s
dmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBj
b2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEg
bmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZp
YyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAg
IHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQg
dXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3Nl
cyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVz
b2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1h
a2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2
ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAg
IE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0
IHVzZSBETlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2Rz
IGluIHRoZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3Vy
ZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJl
Y3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDMtMDYgIE1z
MmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBJbXBsZW1lbnQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IGVlN2I0MDcyMGYwZDhm
NmZiMjJlYTE2YzdmZmNmMmM4ZDc4ZWQwZWMuLjJjMDdmM2EyZDcyZDdhNzEzOTlkZWVmZGM5MjU3
OTZhY2Q4ZTEwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtNTAs
NyArNTAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2ll
U3RvcmFnZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3Jh
Z2VDRk5ldC5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorICAgIHBs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsv
Y2YvTG9hZGVyUnVuTG9vcENGLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDNlODcy
MzM4OTYxMmRkZDU3M2M2YmQ1M2FiYzQ4NzAxM2E0NDczNmYuLjgwNTIwYWIwZmNlMGRmNDgzMmY3
ODdiNDVjMTEwYThhZjM4NzgxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MTMs
NyArNDEzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KIAotICAgIHBsYXRm
b3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNS
ZXNvbHZlUXVldWVDRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDIzYTk0MDM0ZWE5MzQ0MzkzZjk5ZDA0YTE5MjgyZWIxYzg2NTZk
NWMuLjc4OGNmZGI0NDY2ODUzZjJiZmYzM2RmNjIyYWRkODMyMjhjNzI0YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNzA3LDYgKzE3MDcsNyBAQCBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ29va2llLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsQmFzZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCitw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmNwcAogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA4NTQ5YmUzNDEzNjcy
YTA5NmVhZTIyN2Y5YTZkYWZjNDQzYzYxMmNiLi41YmUyNTViY2U0MmYwZWNhMTQzYjhiNzMzZDMy
YzAyMzU1ODhlZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ4Miw3ICs0ODIsNyBA
QCBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0K
IHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9y
bS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU0NGTmV0LmNwcAorcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3Jt
L25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDhjOGQxZjgwMzdmYjg5MGIzMzRiN2Uw
MGE0ZDk4MGRjMjdhM2NmMC4uNTNlZWMyYjAyNjNhYjAyZGUwMmIwMGM3MDViYTc0NWZkZWU5NTU2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjI1NSw2ICsyMjU1LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMx
MkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTcz
MjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3
RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oICovOyB9OwpAQCAtOTYwNCw2ICs5NjA1
LDcgQEAKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNS
ZXNvbHZlUXVldWVDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNS
ZXNvbHZlUXVldWVDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1
RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1Jl
YWRhYmxlU3RyZWFtU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjEyNSw4ICsxMjEyNyw5IEBACiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkda
b29tRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2
NDMgLyogU1ZHWm9vbUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAw
MjU3RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBETlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QjJGMzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2
RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpT
U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyRkEzQzUwMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODcyMSw2ICsxODcyNCw3IEBACiAJ
CQkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJ
CQkJRTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJ
CQlFNEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkx
QUY4RTEzMjEyNTY1QTQ0NDUyMzBGRjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJG
ODE0MDBGNjI3Q0QgLyogRE5TLmggKi8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8q
IEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8q
IEROU1Jlc29sdmVRdWV1ZS5oICovLApAQCAtMjM0NDcsNyArMjM0NTEsOCBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRl
SW5mby5oICovLAotCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAg
Ki8sCisJCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcCAqLywKKwkJCQk3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCAqLywKIAkJCQk3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRh
U3RyZWFtQ0ZOZXQuaCAqLywKIAkJCQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwICovLApAQCAtMjczMTEsNiArMjczMTYsNyBAQAogCQkJ
CUZEMzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNG
TmV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9j
dW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBE
b2N1bWVudEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYw
MDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJsLmNtYWtlCmluZGV4IDRhODJlYjA5OWY1ZjI3MjBjYmUzZDI1ZDM2OTEwMzViNTZj
MGJjZjguLjQ4MDYwYjg1M2JlY2M5ZGJiMTkzZWM2YmM4OTI4YTc0YzM4OWFlODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtMjEsNyArMjEsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3Bw
CiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
RE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlT
ZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3Vy
bC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYy
YTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMxYjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBi
MmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
b3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAu
dHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3Jl
ZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3Bw
CitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9HUmVmUHRyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2Vy
dmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMTEyMmRiM2Q4NjdlYmU2ZGMwNzI5MjEyMGZlZTk3NmUyMzgyNTMwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0
bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZUROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3RuYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5yZXNvbHZlKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgc3RvcFJlc29sdmVETlModWludDY0X3QgaWRlbnRpZmll
cikKK3sKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnN0b3BSZXNv
bHZlKGlkZW50aWZpZXIpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0ROUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMu
aAppbmRleCAyOTBmNDA2MzRjODU4OGJkMWUzYjJlNmQ3ZGMwM2M1MzcxNzVlNjJjLi5iNmI1MTg5
M2QxNmViZjMxMTE3NDYyMjNmMTg1OTM5YWUwOTY5NjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRE5TLmgKQEAgLTIzLDE0ICsyMywzOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIEROU19oCi0jZGVmaW5lIEROU19oCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyNpbmNsdWRlIDxu
ZXRpbmV0L2luLmg+CisjZWxpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8d2luc29jazIuaD4K
KyNlbmRpZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IElQQWRkcmVzcyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4mIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtZW1zZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikp
OworICAgICAgICBtX2FkZHJlc3MgPSBhZGRyZXNzOworICAgIH0KKworICAgIGNvbnN0IHN0cnVj
dCBpbl9hZGRyJiBnZXRTaW5BZGRyKCkgeyByZXR1cm4gbV9hZGRyZXNzLnNpbl9hZGRyOyB9Owor
Citwcml2YXRlOgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJlc3M7Cit9OworCitlbnVt
IGNsYXNzIEROU0Vycm9yIHsgVW5rbm93biwgQ2Fubm90UmVzb2x2ZSwgQ2FuY2VsbGVkIH07CisK
K3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxWZWN0b3I8V2ViQ29yZTo6SVBB
ZGRyZXNzPiwgRE5TRXJyb3I+OwordXNpbmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRE5TQWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0
X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi0jZW5kaWYKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNw
cAppbmRleCBmZTNkOGM5MjUzYzA5MjJkYzBkZjU1ODU1M2Q2MjVmYTc2NGVlZDE2Li44MDE3NzI2
OTJlMmVlM2MwM2M2YzliOTU5NTlkZjFmZjU1NTExODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCkBAIC0yNyw2ICsyNywx
NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgog
CisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5oIgorI2VsaWYg
VVNFKENVUkwpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIgorI2VsaWYgVVNFKENG
KQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZW5kaWYKKwogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw3ICs1
OSw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHJlc29sdmluZ1JldHJ5RGVsYXkgeyAxMDBfbXMg
fTsKIAogRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT4gcXVldWU7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtPiBxdWV1ZTsKIAogICAg
IHJldHVybiBxdWV1ZTsKIH0KQEAgLTU5LDcgKzY3LDYgQEAgRE5TUmVzb2x2ZVF1ZXVlJiBETlNS
ZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiBETlNSZXNvbHZlUXVldWU6OkROU1Jlc29sdmVRdWV1
ZSgpCiAgICAgOiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2ZVF1ZXVlOjp0aW1lckZpcmVkKQog
ICAgICwgbV9yZXF1ZXN0c0luRmxpZ2h0KDApCi0gICAgLCBtX2lzVXNpbmdQcm94eSh0cnVlKQog
ewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBt
X2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgogICAgIC8vIHBsYXRmb3JtcyB0aGF0IGhhdmUgYW4g
YXN5bmNocm9ub3VzIGltcGxlbWVudGF0aW9uIG9mIHVwZGF0ZUlzVXNpbmdQcm94eSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCmluZGV4
IDA3YjhmZGNiNjJmZmZlNTY0NWY5MDA3ZTJmNDE4MDUwZTlmODExYjguLjNhYjk3YjEwMWM2ODNh
NmQ0OTRhZmE0MmM1Y2VkZTBkYWM3NGMyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRl
ZiBETlNSZXNvbHZlUXVldWVfaAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisjaW5jbHVk
ZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFzcyBETlNSZXNvbHZlUXVl
dWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+OwogCiBwdWJs
aWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZVF1ZXVl
KCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xldG9uKCk7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFk
ZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3Vu
dCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZh
dGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNp
bmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsg
dHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHko
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAgc3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3Rz
SW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQcm94eTsKICAgICBNb25vdG9uaWNUaW1lIG1f
bGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk3OWE1N2Q5ZDgyMGVkMTNiMDAyZmQxY2QyZDdjODZlOGUzNzIwMmMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsaW4gSmFja3NvbiAgPGNvbGxp
bmpAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1
ZS5oIgotCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGTmV0d29yay5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVk
ZSAiTG9hZGVyUnVuTG9vcENGLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnVw
ZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJv
eHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7
Ci0gICAgaWYgKCFwcm94eVNldHRpbmdzKSB7Ci0gICAgICAgIG1faXNVc2luZ1Byb3h5ID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0
dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3Jl
YXRlQ0ZVUkwoKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotCi0g
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdv
cmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRDRihD
Rk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRpbmdz
LmdldCgpKSk7Ci0KLSAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50
KGh0dHBQcm94eUFycmF5LmdldCgpKTsKLSAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENG
QXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOwotICAgIGlmIChodHRwUHJveHlD
b3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgp
LCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBodHRw
UHJveHlDb3VudCA9IDA7Ci0gICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwo
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVL
ZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsKLQot
ICAgIG1faXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50Owot
fQotCi1zdGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0
SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKLXsKLSAgICBETlNSZXNvbHZl
UXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRv
IGNhbGwgc2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFy
aWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cuCi0gICAgQ0ZSZWxlYXNl
KHRoZUhvc3QpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQot
ICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhO
YW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBpZiAoIWhvc3Qp
IHsKLSAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAg
fTsKLSAgICBDRkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9z
dCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KLSAgICBCb29sZWFuIHJl
c3VsdCA9IENGSG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRl
eHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotI2lmICFQTEFURk9STShX
SU4pCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BH
ZXRNYWluKCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0jZWxzZQotICAgIC8vIE9uIFdpbmRv
d3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hl
cmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRo
UnVuTG9vcChsZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7Ci0jZW5kaWYKLSAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtD
Rkhvc3RBZGRyZXNzZXMsIDApOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaG9zdG5h
bWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5n
bGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMwZGFlZTY4OTQyMjAzN2U3Nzg0ZGQ4N2E3OTY4NzY0OWY1ZmQ2YTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsaW4gSmFja3NvbiAgPGNvbGxpbmpAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZUNGTmV0LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IlRpbWVyLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgor
I2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOworICAgIGlmICghcHJveHlTZXR0aW5ncykgewor
ICAgICAgICBtX2lzVXNpbmdQcm94eSA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBs
ZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
UHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJM
LmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0
cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworCisgICAgQ0ZJbmRleCBodHRw
UHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7CisgICAg
Q0ZJbmRleCBodHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5
LmdldCgpKTsKKyAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlv
bmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQ
cm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOworICAgIGlmIChodHRw
c1Byb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJy
YXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAg
ICAgIGh0dHBzUHJveHlDb3VudCA9IDA7CisKKyAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94
eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKK30KKworc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJh
Y2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9y
Kiwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRS
ZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNv
bmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlh
bGl6ZWQgYnkgbm93LgorICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDRk5ldDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFJldGFpblB0cjxDRkhvc3RSZWY+
IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBpZiAoIWhvc3QpIHsKKyAgICAgICAgZGVjcmVtZW50UmVx
dWVzdENvdW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDRkhvc3RDbGllbnRD
b250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAgfTsKKyAgICBDRkhvc3RSZWYgbGVha2Vk
SG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2VkIGZyb20g
Y2xpZW50Q2FsbGJhY2soKS4KKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENsaWVudChs
ZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRleHQpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworI2lmICFQTEFURk9STShXSU4pCisgICAgQ0ZIb3N0U2NoZWR1bGVX
aXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7CisjZWxzZQorICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRo
cmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBi
ZSBjYWxsZWQuCisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBsb2Fk
ZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisjZW5kaWYKKyAgICBDRkhvc3RT
dGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDApOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9z
dG5hbWUgKi8sIHVpbnQ2NF90IC8qIGlkZW50aWZpZXIgKi8sIEROU0NvbXBsZXRpb25IYW5kbGVy
JiYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRl
bnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNG
TmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2FjNTY4ZGM4YzllMzYyMTQ2ZDgzMGYzNmU3NjM2NzAzNGQ2NGNh
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVl
dWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpIGZp
bmFsOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7Cisg
ICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit1c2lu
ZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMzFmNTk4NGMwY2U4ZWZhZTg5ODFkOTNhMjgz
MGNhMDcxY2EwYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpZiBVU0UoQ1VS
TCkKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUyMzFhNzc5ZWEzMjY5NTYzOTRiNTYxOGVkYTVkYWYxMDIwZWJl
NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIgorCisjaWYgVVNF
KENVUkwpCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cmVzb2x2ZShjb25z
dCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBETlND
b21wbGV0aW9uSGFuZGxlciYmIC8qIGNvbXBsZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUo
dWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3YmU1OTkxMzNi
OTYzN2NjODlhY2Y5ZDIyOTU3ZjY5ZWQ2YTczOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNv
bHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRh
dGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5T
UmVzb2x2ZVF1ZXVlQ3VybDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM4MGE3YzlmYzdlNjFkNjQ2YmUyMTM3NTkwMGUyYTRhZDM5ODM5NTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVl
U291cC5jcHAKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlU291cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxs
aWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ly8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGls
IHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0g
dHJ1ZTsKK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKKworc3RhdGljIGJv
b2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdlIGhhdmUgYSBsaXN0
IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRl
bSBpbiB0aGUgbGlzdCBpcworICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVu
IHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8K
KyAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmls
aXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisgICAgLy8gaWYgd2Un
cmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIs
IGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRv
IGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAgICByZXR1cm4gdXJp
cyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30KKworc3RhdGljIHZv
aWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKK3sK
KyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZVB0cjxjaGFyKj4g
dXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
RXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNz
YWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICppc1VzaW5nUHJveHlUeXBlID0g
ZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5n
SHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMgdm9pZCBwcm94eVJl
c29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JF
U09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJv
b2wqPih1c2VyRGF0YSkpOworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRh
KSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkK
K3sKKyAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAgICBnX29iamVjdF9n
ZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNy
ZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIs
ICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJlc29sdmVyKTsKKwor
ICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ss
ICZtX2lzVXNpbmdQcm94eSk7CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVz
b2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2
ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQorCitzdGF0aWMgdm9p
ZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQoreworICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cit9CisK
K3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFk
ZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBBU1NFUlQoZGF0YSk7Cisg
ICAgYXV0byogcmVzb2x2ZVF1ZXVlID0gc3RhdGljX2Nhc3Q8RE5TUmVzb2x2ZVF1ZXVlU291cCo+
KGRhdGEpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IEdQT0lOVEVSX1RPX1VJTlQoZ19v
YmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcyksICJpZGVudGlmaWVyIikpOworCisgICAg
YXV0byBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSByZXNvbHZlUXVldWUtPnRha2VDb21w
bGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMoaWRlbnRpZmllcik7CisKKyAgICBpZiAoIWNvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmdldCgpLT5m
aXJzdCk7CisKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKSB7CisgICAgICAgIERO
U0Vycm9yIGVycm9yID0gRE5TRXJyb3I6OlVua25vd247CisKKyAgICAgICAgc3dpdGNoIChzdGF0
dXMpIHsKKyAgICAgICAgY2FzZSBTT1VQX1NUQVRVU19DQU5UX1JFU09MVkU6CisgICAgICAgICAg
ICBlcnJvciA9IEROU0Vycm9yOjpDYW5ub3RSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBE
TlNFcnJvcjo6Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09V
UF9TVEFUVVNfT0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfTsKKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3Vw
X2FkZHJlc3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoRE5TRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBh
ZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1
dG8qIGlwQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2lu
Kj4oc291cF9hZGRyZXNzX2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAg
ICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3Nb
aV0pKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkZHJlc3Nlcyk7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnRha2VDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnModWlu
dDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
YXV0byBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSBtX2NvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycy50YWtlKGlkZW50aWZpZXIpOworCisgICAgaWYgKCFjb21wbGV0aW9uQW5kQ2FuY2Vs
SGFuZGxlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdURk1vdmUo
Y29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpyZW1vdmVDYW5jZWxBbmRDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2NvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0
ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRh
KCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOworfQorCit2b2lkIEROU1Jl
c29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3Qg
aWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRH
UmVmKHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1
dG8gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291
cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9h
c3luY19jb250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigp
KSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssIHRoaXMp
OworCisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVu
dGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CisKKyAgICBtX2NvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxETlNS
ZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworfQorCit2b2lkIEROU1Jl
c29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChhdXRvIGNvbXBsZXRpb25BbmRDYW5j
ZWxIYW5kbGVyID0gbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMudGFrZShpZGVudGlmaWVy
KSkgeworICAgICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbChjb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlci5nZXQoKS0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbkFuZENhbmNlbEhh
bmRsZXIuZ2V0KCktPmZpcnN0KG1ha2VVbmV4cGVjdGVkKEROU0Vycm9yOjpDYW5jZWxsZWQpKTsK
KyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ODZhNmIxMzNjYjk3MzZjYWI3YTY1ZWIxYTE2OGRlZWI4NWU3Y2RiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZVNvdXAgZmluYWwgOiBw
dWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBDb21wbGV0aW9uQW5k
Q2FuY2VsSGFuZGxlcnMgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXIs
IEdSZWZQdHI8R0NhbmNlbGxhYmxlPj47CisKKyAgICBETlNSZXNvbHZlUXVldWVTb3VwKCkgPSBk
ZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRf
dCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0
b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpIGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPENvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4gdGFrZUNvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycyh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNhbmNlbEFuZENv
bXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBz
dGQ6OnVuaXF1ZV9wdHI8Q29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzPj4gbV9jb21wbGV0aW9u
QW5kQ2FuY2VsSGFuZGxlcnM7CisKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVz
b2x2ZVF1ZXVlU291cDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3
ZGRkMjIzM2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYzOTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYg
VVNFKFNPVVApCi0KLSNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Ly8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGls
IHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0g
dHJ1ZTsKLXN0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJv
b2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0
IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRl
bSBpbiB0aGUgbGlzdCBpcwotICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVu
IHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8K
LSAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmls
aXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2Un
cmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIs
IGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0gICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRv
IGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJp
cyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZv
aWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsK
LSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4g
dXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygi
RXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNz
YWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICppc1VzaW5nUHJveHlUeXBlID0g
ZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwotICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5n
SHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJl
c29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JF
U09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJv
b2wqPih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRh
KSk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewot
ICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOwotICAgIGdfb2JqZWN0X2dldChO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRl
U291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJl
c29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAg
Z19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhh
bXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1f
aXNVc2luZ1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZl
ci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZv
ckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJl
c29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9p
ZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJl
ZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCku
Z2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51
dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQot
dm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwot
fQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNh
MmYwMWYyYTE0MDdjMGYwYmNjZjIzNzIxMi4uYmJkNjg0Yjc4MzM2NzgyYWE1ZDBjYzlkODhhYjMw
MTk4MWJmYTAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkKQEAgLTE2MiwxNSArMTY2LDIy
IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1NvY2tldE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAgICAgTmV0d29ya1JUQ1NvY2tldChkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSwgKnRoaXMpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisKIHZvaWQgTmV0d29ya1JUQ1Byb3Zp
ZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JU
Q1Jlc29sdmVyPihbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNz
ZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gTmV0d29y
a1JUQ1Jlc29sdmVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIGlkZW50aWZpZXJdKFdlYkNv
cmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
IXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9
IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuZXJyb3IoKSAhPSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAg
ICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jl
c29sdmVyOjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhyZXN1bHQu
dmFsdWUoKSksIGlkZW50aWZpZXIpOworCisgICAgICAgIGF1dG8gYWRkcmVzc2VzID0gV1RGOjpt
YXAocmVzdWx0LnZhbHVlKCksIFtdIChhdXRvJiBhZGRyZXNzKSB7CisgICAgICAgICAgICByZXR1
cm4gUlRDTmV0d29yazo6SVBBZGRyZXNzIHsgcnRjOjpJUEFkZHJlc3MgeyBhZGRyZXNzLmdldFNp
bkFkZHIoKSB9IH07CisgICAgICAgIH0pOworCisgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3Mo
YWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAgICAgcmVzb2x2ZXItPnN0YXJ0KGFk
ZHJlc3MpOwogICAgIG1fcmVzb2x2ZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc29sdmVy
KSk7CkBAIC0xODIsNiArMTkzLDM0IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpzdG9wUmVz
b2x2ZXIodWludDY0X3QgaWRlbnRpZmllcikKICAgICAgICAgcmVzb2x2ZXItPnN0b3AoKTsKIH0K
IAorI2Vsc2UKKwordm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2
NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gW3RoaXMsIGlkZW50aWZpZXJdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09y
RXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUo
KSkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IFdlYkNvcmU6OkROU0Vycm9y
OjpDYW5jZWxsZWQpCisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBp
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8gYWRkcmVzc2VzID0gV1RGOjptYXAocmVzdWx0LnZhbHVlKCksIFtdIChhdXRvJiBhZGRyZXNz
KSB7CisgICAgICAgICAgICByZXR1cm4gUlRDTmV0d29yazo6SVBBZGRyZXNzIHsgcnRjOjpJUEFk
ZHJlc3MgeyBhZGRyZXNzLmdldFNpbkFkZHIoKSB9IH07CisgICAgICAgIH0pOworCisgICAgICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVy
OjpTZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CisgICAgfTsKKwor
ICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgaWRlbnRpZmllciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6c3RvcFJlc29s
dmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgV2ViQ29yZTo6c3RvcFJlc29sdmVETlMo
aWRlbnRpZmllcik7Cit9CisKKyNlbmRpZgorCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y2xv
c2VMaXN0ZW5pbmdTb2NrZXRzKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIW1faXNMaXN0ZW5pbmdTb2NrZXRBdXRob3JpemVkKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi4w
YThjYTRlNGU2OGM0MWUzMTA3ZDI0ODRiYjY3YmNmNjFlNzBjOWIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5jcHAKQEAgLTMyLDY4ICszMiwzNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGlj
IHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBl
SW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCisvLyBGSVhNRTog
VXNlIHRoZSBmdW5jdGlvbiBhZnRlciByZW1vdmluZyB0aGUgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuCisjaWYgIVBMQVRGT1JNKENPQ09BKQorc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNv
bHZlcj4gTmV0d29ya1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3QgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBB
U1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5kb21h
aW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZv
IGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxO
ZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAgIENG
QXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNz
aW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2Vz
KTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAgYWRk
cmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJlZiBk
YXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2Vz
LCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAgICBh
ZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRk
cmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBsZXRl
ZChhZGRyZXNzZXMpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29s
dmVyPihuZXcgTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7CiB9CisjZW5kaWYKIAotTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRD
UmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICA6IG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCitOZXR3b3JrUlRD
UmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewogfQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6On5OZXR3b3JrUlRD
UmVzb2x2ZXIoKQogewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0
KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBD
Rkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKICAgICBpZiAo
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpVbmtub3duKSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkROU0Vy
cm9yOjpVbmtub3duKSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25z
dCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpKTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgp
LCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUpOwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hv
c3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOwotICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgbV9pZGVu
dGlmaWVyLCBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3AoKQogewotICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1f
aG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOwotICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkp
OwotfQotCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCi17Ci0gICAgaWYgKGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpzdG9wUmVzb2x2ZURO
UyhtX2lkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5N2NkYThjNzIzYmRlMzVlNzI3OC4uMzhlNWY3
NjI3MmM1ODAyYmNiMDNlYWI3MzY0MTgwMDY0OTk2NTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKQEAg
LTI4LDcgKzI4LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiUlRDTmV0d29y
ay5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RO
Uy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNiwyMiArMzYsMTcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIE5ldHdvcmtSVENSZXNvbHZlciB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBF
cnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya1JUQ1Jlc29sdmVyPiBjcmVhdGUodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6
RE5TQ29tcGxldGlvbkhhbmRsZXImJik7CiAKLSAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0g
RXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6
SVBBZGRyZXNzPj4sIEVycm9yPjsKLSAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChBZGRyZXNzZXNPckVycm9yJiYpPjsKKyAgICBOZXR3b3Jr
UlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhh
bmRsZXImJik7CisgICAgdmlydHVhbCB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CiAKLSAgICBleHBs
aWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdv
cmtSVENSZXNvbHZlcigpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKLSAgICB2b2lkIHN0YXJ0KGNvbnN0
IFN0cmluZyYgYWRkcmVzcyk7Ci0gICAgdm9pZCBzdG9wKCk7Ci0KLSAgICB2b2lkIGNvbXBsZXRl
ZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYpOwotCi1wcml2YXRlOgotICAg
IENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgUmV0YWluUHRyPENG
SG9zdFJlZj4gbV9ob3N0OworcHJvdGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsK
KyAgICBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDk0ZGFlNDQ2ZDljNTJiMTgyNzU4ODhlYTdjZWNjYzI0NTYyNWU5ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0
UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3Is
IHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsK
KworICAgIEFTU0VSVChpbmZvKTsKKyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5l
dHdvcmtSVENSZXNvbHZlckNvY29hKj4oaW5mbyk7CisKKyAgICBpZiAoZXJyb3ItPmRvbWFpbikg
eworICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMg
bm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KKyAgICAgICAgcmVzb2x2ZXItPmNvbXBsZXRl
ZChtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6VW5rbm93bikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQm9vbGVhbiByZXN1bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNv
bHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwg
JnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBzaXpl
X3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOworICAgIFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVm
KUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKKyAgICAg
ICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRy
X2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNr
ZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKCphZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29s
dmVyLT5jb21wbGV0ZWQoV1RGTW92ZShhZGRyZXNzZXMpKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtSVENSZXNvbHZlcj4gTmV0d29ya1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3Qg
aWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4o
bmV3IE5ldHdvcmtSVENSZXNvbHZlckNvY29hKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50
aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNj
aGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0
YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9z
dENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhp
cywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hv
c3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0
aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BE
ZWZhdWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0
aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2E6OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxl
ZCkpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpjb21wbGV0ZWQoV2ViQ29y
ZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIGFkZHJlc3Nlc09yRXJyb3IpCit7CisgICAgaWYgKGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFkZHJlc3Nlc09yRXJyb3IpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg0MTk4ZDE2YTAxMmY0MWIzYTFhYzdlN2E1
ZWFhZTNiM2NkYjQwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1
ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIHdo
ZW4gd2UgY29tcGxldGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlNSZXNvbHZlUXVldWVD
Rk5ldC4KK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGZpbmFsIDogcHVibGljIE5ldHdv
cmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0
YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7
CisKKyAgICB2b2lkIGNvbXBsZXRlZChXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYpOwor
Citwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE4YTkxOGZiMmNh
Yzg0ZTVmYTRiNWUyZDcyOWYxNmM3YjZkYTFiZWQuLjhhYzU2YTBkMTA1ZWE5MDdjMjNkYjJmNzhk
ZDMxZTM1YThiNmM3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTE1LDYgKzkxNSw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYw
MDZEMCAvKiBSVENOZXR3b3JrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAq
LzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUw
MEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3
NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgKi87IH07CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRD
TmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJ
NDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMw
MDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdv
cmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMyODcsNiArMzI4OCw4IEBACiAJCTQxMDQ4MkND
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JU
Q1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2
MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3
NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIzNiw2ICs2MjM5LDggQEAKIAkJCQk0MURDNDU5ODFF
M0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJ
CTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAog
CQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywK
KwkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwICovLAorCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oICovLAogCQkJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5oICovLAogCQkJCTQxMzA3NTlEMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0Lm1lc3NhZ2VzLmluICovLApAQCAtMTA2MjEsNiArMTA2MjYsNyBAQAogCQkJCTQxREM0
NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBF
Njc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJC
NTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0
d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgy
ODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZWY3OGY2YTk5ZjNjN2JlZTRmMWM1NDY3MjM2MTY2MmNkZDFkMjViMS4uMjM4NDY2NGUx
MzViM2UxNjU2ZWY2ZjUyNzAzMTE5MWFmZmUxZjMwYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTA3ICBB
bGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0
d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgQWRkZWQgbmV3IHVuaXQgdGVzdHMgZm9yIGhlIHJlc29sdmUg
YW5kIHN0b3BSZXNvbHZlIGZ1bmN0aW9ucy4gV2UgbmVlZCB0byBjb21waWxlIHRoZW0gZm9yIHRo
ZQorICAgICAgICBvdGhlciBwbGF0Zm9ybXMgd2hlbiB0aGUgQVBJcyBhcmUgc3VwcG9ydGVkLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcDoKKwogMjAxOC0wMy0wNiAgRG9taW5p
ayBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQVJNXSBEaXNhYmxl
IHRlc3RzIHRoYXQgcnVuIG91dCBvZiBtZW1vcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IDRhZWY2OTUzY2QxNjE0YmY2Y2YwM2NlMjI0OGFmYjNjNmQyZGU1ZjguLjYy
MDJmNDZiYWYwYjMzNzg1Yzg1Y2FkNzJjNmIyODMzYmU4ODdkNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtODcsNiArODcsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0
V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0NTU1BhcnNlci5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgwMTQ5ZjdmNzJm
ZGYwM2VjMmVlNmE0YzMwNGRjMmZmZmVkOTBlMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIK
KyNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRE5T
Lmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworYm9vbCBkb25lID0gZmFsc2U7
CisKK1RFU1QoRE5TVGVzdCwgY2FuY2VsUmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0
aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmlu
Zygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAg
IEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5T
QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVl
OworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgICAgICBB
U1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVk
KTsKKworICAgICAgICByZXR1cm47CisgICAgfTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBy
ZXNvbHZlRE5TKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgc3RvcFJlc29sdmVETlMoaWRlbnRpZmllcik7CisgICAgVXRpbDo6cnVuKCZkb25l
KTsKK30KKworVEVTVChETlNUZXN0LCBjYW5ub3RSZXNvbHZlRE5TKQoreworICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgY29uc3QgU3RyaW5nIGhvc3RuYW1lID0g
U3RyaW5nKCJub3RhdmFsaWRkb21haW4ubm90YXZhbGlkZG9tYWluIik7CisgICAgdWludDY0X3Qg
aWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFu
ZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUg
eworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfRkFMU0UocmVzdWx0Lmhh
c192YWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocmVzdWx0LmVycm9yKCkgPT0gV2ViQ29y
ZTo6RE5TRXJyb3I6OkNhbm5vdFJlc29sdmUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9Owor
CisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQor
CitURVNUKEROU1Rlc3QsIHJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53
ZWJraXQub3JnIik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nl
c09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworCisgICAgICAgIHJldHVybjsK
KyAgICB9OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlk
ZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRv
bmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335188</attachid>
            <date>2018-03-07 05:55:54 -0800</date>
            <delta_ts>2018-03-07 06:41:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178855-20180307145552.patch</filename>
            <type>text/plain</type>
            <size>83602</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM0ZjI5MDk3OGQyMzE2
MmNkZWVmYjdlODYzNjZhMjNjYTQ2NjRjNC4uNWYzZTJjYjVlYmZiMzg1MmRlODhhMjAwMTZmZWIx
MDI3NTkxYWNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAzLTA3ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBG
YWJsZXQuCisKKyAgICAgICAgQWRkIG5ldyBBUEkgaW4gdGhlIEROU1Jlc29sdmVRdWV1ZSBhbGxv
d2luZyB0byByZXZvbHZlIGhvc3RuYW1lcyBhbmQgZ2V0IHRoZSByZXN1bHQuIEFkZCBwbGF0Zm9y
bQorICAgICAgICBzcGVjaWZpYyBjb2RlIGZvciBzb3VwIHBsYXRmb3JtIGFuZCByZWZhY3RvciB0
aGUgb3RoZXIgcGxhdGZvcm1zLiBBZGRlZCBuZXcgQVBJIHRvIHRoZSBETlMgQVBJIGhlYWRlcgor
ICAgICAgICBhbmQgbW92ZSB0aGUgZ2VuZXJhbCBjb2RlIHRvIHRoZSBETlMuY3BwIGZpbGUsIHRo
YXQgd2F5IHdlIGNhbiByZXVzZSB0aGF0IGNvZGUgaW4gYWxsIHRoZSBwbGF0Zm9ybXMKKyAgICAg
ICAgYW5kIGxlYXZlIHRoZSBSZXNvbHZlUXVldWUgY2xhc3Mgb2YgdGhlIHBsYXRmb3JtcyBpbiBh
IGZpbGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9y
LgorCisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZTogTW92ZSB0aGUgRE5TQ0ZOZXQg
Y2xhc3MgdG8gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGQgdGhlIEROUy5jcHAgZm9yIGNv
bXBpbGF0aW9uLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLCByZXNvbHZlcyBhIGhvc3RuYW1l
LCByZWNlaXZlcyB0aGUgaWRlbnRpZmllciBvZiB0aGUgb3BlcmF0aW9uCisgICAgICAgIGFuZCB0
aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6c3RvcFJlc29sdmVETlMp
OiBBZGQgdGhlIGZ1bmN0aW9uLCBzdG9wcyBhIHJlc29sdXRpb24gb3BlcmF0aW9uLCByZWNlaXZl
cyB0aGUgaWRlbnRpZmllcgorICAgICAgICBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3Rv
cFJlc29sdmVETlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0
aGlzIGNsYXNzIHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwg
aXQgZG9lcworICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBz
dHJ1Y3Qgc29ja2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNv
cmU6OkROU0NvbXBsZXRpb25IYW5kbGVyKTogQWRkIHRoaXMgQ29tcGxldGlvbkhhbmRsZXIgdHlw
ZSB0byBiZSB1c2VkIHdoZW4gcmVzb2x2aW5nIHRoZSBETlMKKyAgICAgICAgYWRkcmVzcy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5T
UmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhlIHNpbmdsZXRvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKTogVXNlIEROU1Jlc29s
dmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhlIHNpbmdsZXRvbi4uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUpOiBBZGQgdGhpcyBtZXRo
b2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNlbmRzIHRoZQorICAgICAg
ICBpZGVudGlmaWVyIGFuZCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIHVzZSB3aGVuIHJldHVy
bmluZyB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpzdG9w
UmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB3
aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
Lmg6IEFkZCB0aGUgbmV3IG1ldGhvZHMgYW5kIG1ha2UgdGhlIGNsYXNzIGFic3RyYWN0LCBzbyB0
aGF0IGV2ZXJ5CisgICAgICAgIHBsYXRmb3JtIGNhbiBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9ucy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQu
Y3BwLgorICAgICAgICBBZGQgdGhlIG1ldGhvZHMgdG8gdGhlIG5ldyBjbGFzcyBETlNSZXNvbHZl
UXVldWVDRk5ldCwgbW92ZSB0aGUgcHJlZmV0Y2hETlMgdG8gdGhlIEROUy5jcHAgZ2VuZXJhbAor
ICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0Lmg6IEFkZCB0aGUgbmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0
aGUgRE5TUmVzb2x2ZVF1ZXVlLiBBZGQgdGhlCisgICAgICAgIG5ldyBtZXRob2RzLCB3ZSBoYXZl
IHRvIGltcGxlbWVudCB0aGVzZSBtZXRob2RzIGFuZCBtb3ZlIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXIgZm9yIENPQ09BIGNvZGUgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZUNGOjpyZXNvbHZlKTogRHVtbXkgbWV0aG9kLCBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRjo6c3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaDogQWRk
IHRoZSBuZXcgY2xhc3MgaW5oZXJpdGluZyBmcm9tIHRoZSBETlNSZXNvbHZlUXVldWUuCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmg6IE5l
dyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZSBjbGFzcywgYWRkaW5n
CisgICAgICAgIGEgSGFzTWFwIHdpdGggdGhlIGFjdGl2ZSBvcGVyYXRpb25zLCBpdCBhbGxvd3Mg
c3RvcHBpbmcgdGhlbS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2
ZVF1ZXVlU291cC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRE5TU291cC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlZFdpdGhPYnNl
cnZlckNhbGxiYWNrKTogQ2FsbGVkIHdoZW4gdGhlIHJlc3VsdCBhZGRyZXNzIGZyb20gdGhlIHNv
dXAgcGxhdGZvcm0gaXMgcmVhZHksCisgICAgICAgIHNlbmRzIHRoZSBhZGRyZXNzIHRvIHRoZSBj
b21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3Vw
OjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB3aXRoIHRoZSBzb3VwIGxp
YnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpzdG9wUmVzb2x2
ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nlc3Mgd2l0aCBhIEdDYW5jZWxs
YWJsZS4KKwogMjAxOC0wMy0wNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0Nvb3JkR3JhcGhpY3NdIFJlbW92ZSB1bnVzZWQgc2Nyb2xsaW5nLXJlbGF0
ZWQgY29kZSBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIsIENvb3JkaW5hdGVkR3JhcGhpY3Mgc3RhY2sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODQxM2Y4NzlhMzI1NDIzZTYwMGJjMmFkYzQ0NWQ3YTJjNmI4M2Y1Ni4uZmY5
Y2FiZDBlOTZkZWE5MTUwOGYzY2RmNzc3MDgxZDlkNDkwYzJhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNSBAQAorMjAxOC0wMy0wNyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNv
bT4KKworICAgICAgICBNYWtlIE5ldHdvcmtSVENSZXNvbHZlciBwb3J0IGFnbm9zdGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNp
ZmljIENvY29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBj
bGFzcywgbWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGlj
IGFuZCBkZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNo
IGVuY2Fwc3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4g
YWxpYXMgY2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUg
cmVzb2x2ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVz
b2x2ZXIpOiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRk
cmVzcyBjbGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0
YyBsaWJyYXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5T
IEFQSSB0byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4g
dGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9m
IHRoZSByZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVy
IGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29s
dmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBj
b2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEg
bmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZp
YyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAg
IHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQg
dXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3Nl
cyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVz
b2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1h
a2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2
ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAg
IE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0
IHVzZSBETlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2Rz
IGluIHRoZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3Vy
ZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJl
Y3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDMtMDYgIE1z
MmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBJbXBsZW1lbnQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IGVlN2I0MDcyMGYwZDhm
NmZiMjJlYTE2YzdmZmNmMmM4ZDc4ZWQwZWMuLjJjMDdmM2EyZDcyZDdhNzEzOTlkZWVmZGM5MjU3
OTZhY2Q4ZTEwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtNTAs
NyArNTAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2ll
U3RvcmFnZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3Jh
Z2VDRk5ldC5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorICAgIHBs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsv
Y2YvTG9hZGVyUnVuTG9vcENGLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDNlODcy
MzM4OTYxMmRkZDU3M2M2YmQ1M2FiYzQ4NzAxM2E0NDczNmYuLjgwNTIwYWIwZmNlMGRmNDgzMmY3
ODdiNDVjMTEwYThhZjM4NzgxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MTMs
NyArNDEzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KIAotICAgIHBsYXRm
b3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNS
ZXNvbHZlUXVldWVDRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDIzYTk0MDM0ZWE5MzQ0MzkzZjk5ZDA0YTE5MjgyZWIxYzg2NTZk
NWMuLjc4OGNmZGI0NDY2ODUzZjJiZmYzM2RmNjIyYWRkODMyMjhjNzI0YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNzA3LDYgKzE3MDcsNyBAQCBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ29va2llLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsQmFzZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCitw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmNwcAogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA4NTQ5YmUzNDEzNjcy
YTA5NmVhZTIyN2Y5YTZkYWZjNDQzYzYxMmNiLi41YmUyNTViY2U0MmYwZWNhMTQzYjhiNzMzZDMy
YzAyMzU1ODhlZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ4Miw3ICs0ODIsNyBA
QCBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0K
IHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9y
bS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU0NGTmV0LmNwcAorcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3Jt
L25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDhjOGQxZjgwMzdmYjg5MGIzMzRiN2Uw
MGE0ZDk4MGRjMjdhM2NmMC4uNTNlZWMyYjAyNjNhYjAyZGUwMmIwMGM3MDViYTc0NWZkZWU5NTU2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjI1NSw2ICsyMjU1LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMx
MkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTcz
MjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3
RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oICovOyB9OwpAQCAtOTYwNCw2ICs5NjA1
LDcgQEAKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNS
ZXNvbHZlUXVldWVDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNS
ZXNvbHZlUXVldWVDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1
RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1Jl
YWRhYmxlU3RyZWFtU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjEyNSw4ICsxMjEyNyw5IEBACiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkda
b29tRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2
NDMgLyogU1ZHWm9vbUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAw
MjU3RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBETlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QjJGMzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2
RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpT
U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyRkEzQzUwMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODcyMSw2ICsxODcyNCw3IEBACiAJ
CQkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJ
CQkJRTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJ
CQlFNEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkx
QUY4RTEzMjEyNTY1QTQ0NDUyMzBGRjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJG
ODE0MDBGNjI3Q0QgLyogRE5TLmggKi8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8q
IEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8q
IEROU1Jlc29sdmVRdWV1ZS5oICovLApAQCAtMjM0NDcsNyArMjM0NTEsOCBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRl
SW5mby5oICovLAotCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAg
Ki8sCisJCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcCAqLywKKwkJCQk3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCAqLywKIAkJCQk3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRh
U3RyZWFtQ0ZOZXQuaCAqLywKIAkJCQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwICovLApAQCAtMjczMTEsNiArMjczMTYsNyBAQAogCQkJ
CUZEMzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNG
TmV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9j
dW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBE
b2N1bWVudEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYw
MDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJsLmNtYWtlCmluZGV4IDRhODJlYjA5OWY1ZjI3MjBjYmUzZDI1ZDM2OTEwMzViNTZj
MGJjZjguLjQ4MDYwYjg1M2JlY2M5ZGJiMTkzZWM2YmM4OTI4YTc0YzM4OWFlODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtMjEsNyArMjEsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3Bw
CiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
RE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlT
ZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3Vy
bC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYy
YTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMxYjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBi
MmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
b3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAu
dHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3Jl
ZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3Bw
CitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9HUmVmUHRyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2Vy
dmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMTEyMmRiM2Q4NjdlYmU2ZGMwNzI5MjEyMGZlZTk3NmUyMzgyNTMwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0
bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZUROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3RuYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5yZXNvbHZlKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgc3RvcFJlc29sdmVETlModWludDY0X3QgaWRlbnRpZmll
cikKK3sKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnN0b3BSZXNv
bHZlKGlkZW50aWZpZXIpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0ROUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMu
aAppbmRleCAyOTBmNDA2MzRjODU4OGJkMWUzYjJlNmQ3ZGMwM2M1MzcxNzVlNjJjLi5iNmI1MTg5
M2QxNmViZjMxMTE3NDYyMjNmMTg1OTM5YWUwOTY5NjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRE5TLmgKQEAgLTIzLDE0ICsyMywzOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIEROU19oCi0jZGVmaW5lIEROU19oCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyNpbmNsdWRlIDxu
ZXRpbmV0L2luLmg+CisjZWxpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8d2luc29jazIuaD4K
KyNlbmRpZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IElQQWRkcmVzcyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4mIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtZW1zZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikp
OworICAgICAgICBtX2FkZHJlc3MgPSBhZGRyZXNzOworICAgIH0KKworICAgIGNvbnN0IHN0cnVj
dCBpbl9hZGRyJiBnZXRTaW5BZGRyKCkgeyByZXR1cm4gbV9hZGRyZXNzLnNpbl9hZGRyOyB9Owor
Citwcml2YXRlOgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJlc3M7Cit9OworCitlbnVt
IGNsYXNzIEROU0Vycm9yIHsgVW5rbm93biwgQ2Fubm90UmVzb2x2ZSwgQ2FuY2VsbGVkIH07CisK
K3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxWZWN0b3I8V2ViQ29yZTo6SVBB
ZGRyZXNzPiwgRE5TRXJyb3I+OwordXNpbmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRE5TQWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0
X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi0jZW5kaWYKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNw
cAppbmRleCBmZTNkOGM5MjUzYzA5MjJkYzBkZjU1ODU1M2Q2MjVmYTc2NGVlZDE2Li44MDE3NzI2
OTJlMmVlM2MwM2M2YzliOTU5NTlkZjFmZjU1NTExODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCkBAIC0yNyw2ICsyNywx
NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgog
CisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5oIgorI2VsaWYg
VVNFKENVUkwpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIgorI2VsaWYgVVNFKENG
KQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZW5kaWYKKwogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw3ICs1
OSw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHJlc29sdmluZ1JldHJ5RGVsYXkgeyAxMDBfbXMg
fTsKIAogRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT4gcXVldWU7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtPiBxdWV1ZTsKIAogICAg
IHJldHVybiBxdWV1ZTsKIH0KQEAgLTU5LDcgKzY3LDYgQEAgRE5TUmVzb2x2ZVF1ZXVlJiBETlNS
ZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiBETlNSZXNvbHZlUXVldWU6OkROU1Jlc29sdmVRdWV1
ZSgpCiAgICAgOiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2ZVF1ZXVlOjp0aW1lckZpcmVkKQog
ICAgICwgbV9yZXF1ZXN0c0luRmxpZ2h0KDApCi0gICAgLCBtX2lzVXNpbmdQcm94eSh0cnVlKQog
ewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBt
X2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgogICAgIC8vIHBsYXRmb3JtcyB0aGF0IGhhdmUgYW4g
YXN5bmNocm9ub3VzIGltcGxlbWVudGF0aW9uIG9mIHVwZGF0ZUlzVXNpbmdQcm94eSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCmluZGV4
IDA3YjhmZGNiNjJmZmZlNTY0NWY5MDA3ZTJmNDE4MDUwZTlmODExYjguLjNhYjk3YjEwMWM2ODNh
NmQ0OTRhZmE0MmM1Y2VkZTBkYWM3NGMyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRl
ZiBETlNSZXNvbHZlUXVldWVfaAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisjaW5jbHVk
ZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFzcyBETlNSZXNvbHZlUXVl
dWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+OwogCiBwdWJs
aWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZVF1ZXVl
KCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xldG9uKCk7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFk
ZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3Vu
dCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZh
dGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNp
bmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsg
dHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHko
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAgc3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3Rz
SW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQcm94eTsKICAgICBNb25vdG9uaWNUaW1lIG1f
bGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk3OWE1N2Q5ZDgyMGVkMTNiMDAyZmQxY2QyZDdjODZlOGUzNzIwMmMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsaW4gSmFja3NvbiAgPGNvbGxp
bmpAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1
ZS5oIgotCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGTmV0d29yay5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVk
ZSAiTG9hZGVyUnVuTG9vcENGLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnVw
ZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJv
eHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7
Ci0gICAgaWYgKCFwcm94eVNldHRpbmdzKSB7Ci0gICAgICAgIG1faXNVc2luZ1Byb3h5ID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0
dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3Jl
YXRlQ0ZVUkwoKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotCi0g
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdv
cmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRDRihD
Rk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRpbmdz
LmdldCgpKSk7Ci0KLSAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50
KGh0dHBQcm94eUFycmF5LmdldCgpKTsKLSAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENG
QXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOwotICAgIGlmIChodHRwUHJveHlD
b3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgp
LCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBodHRw
UHJveHlDb3VudCA9IDA7Ci0gICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwo
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVL
ZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsKLQot
ICAgIG1faXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50Owot
fQotCi1zdGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0
SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKLXsKLSAgICBETlNSZXNvbHZl
UXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRv
IGNhbGwgc2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFy
aWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cuCi0gICAgQ0ZSZWxlYXNl
KHRoZUhvc3QpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQot
ICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhO
YW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBpZiAoIWhvc3Qp
IHsKLSAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAg
fTsKLSAgICBDRkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9z
dCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KLSAgICBCb29sZWFuIHJl
c3VsdCA9IENGSG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRl
eHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotI2lmICFQTEFURk9STShX
SU4pCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BH
ZXRNYWluKCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0jZWxzZQotICAgIC8vIE9uIFdpbmRv
d3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hl
cmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRo
UnVuTG9vcChsZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7Ci0jZW5kaWYKLSAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtD
Rkhvc3RBZGRyZXNzZXMsIDApOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaG9zdG5h
bWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5n
bGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMwZGFlZTY4OTQyMjAzN2U3Nzg0ZGQ4N2E3OTY4NzY0OWY1ZmQ2YTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsaW4gSmFja3NvbiAgPGNvbGxpbmpAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZUNGTmV0LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IlRpbWVyLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgor
I2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOworICAgIGlmICghcHJveHlTZXR0aW5ncykgewor
ICAgICAgICBtX2lzVXNpbmdQcm94eSA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBs
ZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
UHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJM
LmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0
cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworCisgICAgQ0ZJbmRleCBodHRw
UHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7CisgICAg
Q0ZJbmRleCBodHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5
LmdldCgpKTsKKyAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlv
bmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQ
cm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOworICAgIGlmIChodHRw
c1Byb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJy
YXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAg
ICAgIGh0dHBzUHJveHlDb3VudCA9IDA7CisKKyAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94
eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKK30KKworc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJh
Y2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9y
Kiwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRS
ZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNv
bmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlh
bGl6ZWQgYnkgbm93LgorICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDRk5ldDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFJldGFpblB0cjxDRkhvc3RSZWY+
IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBpZiAoIWhvc3QpIHsKKyAgICAgICAgZGVjcmVtZW50UmVx
dWVzdENvdW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDRkhvc3RDbGllbnRD
b250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAgfTsKKyAgICBDRkhvc3RSZWYgbGVha2Vk
SG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2VkIGZyb20g
Y2xpZW50Q2FsbGJhY2soKS4KKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENsaWVudChs
ZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRleHQpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworI2lmICFQTEFURk9STShXSU4pCisgICAgQ0ZIb3N0U2NoZWR1bGVX
aXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7CisjZWxzZQorICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRo
cmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBi
ZSBjYWxsZWQuCisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBsb2Fk
ZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisjZW5kaWYKKyAgICBDRkhvc3RT
dGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDApOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9z
dG5hbWUgKi8sIHVpbnQ2NF90IC8qIGlkZW50aWZpZXIgKi8sIEROU0NvbXBsZXRpb25IYW5kbGVy
JiYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRl
bnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNG
TmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2FjNTY4ZGM4YzllMzYyMTQ2ZDgzMGYzNmU3NjM2NzAzNGQ2NGNh
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVl
dWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpIGZp
bmFsOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7Cisg
ICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit1c2lu
ZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMzFmNTk4NGMwY2U4ZWZhZTg5ODFkOTNhMjgz
MGNhMDcxY2EwYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpZiBVU0UoQ1VS
TCkKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUyMzFhNzc5ZWEzMjY5NTYzOTRiNTYxOGVkYTVkYWYxMDIwZWJl
NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIgorCisjaWYgVVNF
KENVUkwpCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cmVzb2x2ZShjb25z
dCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBETlND
b21wbGV0aW9uSGFuZGxlciYmIC8qIGNvbXBsZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUo
dWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3YmU1OTkxMzNi
OTYzN2NjODlhY2Y5ZDIyOTU3ZjY5ZWQ2YTczOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNv
bHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRh
dGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5T
UmVzb2x2ZVF1ZXVlQ3VybDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM4MGE3YzlmYzdlNjFkNjQ2YmUyMTM3NTkwMGUyYTRhZDM5ODM5NTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVl
U291cC5jcHAKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlU291cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxs
aWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ly8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGls
IHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0g
dHJ1ZTsKK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKKworc3RhdGljIGJv
b2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdlIGhhdmUgYSBsaXN0
IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRl
bSBpbiB0aGUgbGlzdCBpcworICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVu
IHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8K
KyAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmls
aXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisgICAgLy8gaWYgd2Un
cmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIs
IGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRv
IGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAgICByZXR1cm4gdXJp
cyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30KKworc3RhdGljIHZv
aWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKK3sK
KyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZVB0cjxjaGFyKj4g
dXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
RXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNz
YWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICppc1VzaW5nUHJveHlUeXBlID0g
ZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5n
SHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMgdm9pZCBwcm94eVJl
c29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JF
U09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJv
b2wqPih1c2VyRGF0YSkpOworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRh
KSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkK
K3sKKyAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAgICBnX29iamVjdF9n
ZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNy
ZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIs
ICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJlc29sdmVyKTsKKwor
ICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ss
ICZtX2lzVXNpbmdQcm94eSk7CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVz
b2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2
ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQorCitzdGF0aWMgdm9p
ZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQoreworICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cit9CisK
K3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFk
ZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBBU1NFUlQoZGF0YSk7Cisg
ICAgYXV0byogcmVzb2x2ZVF1ZXVlID0gc3RhdGljX2Nhc3Q8RE5TUmVzb2x2ZVF1ZXVlU291cCo+
KGRhdGEpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IEdQT0lOVEVSX1RPX1VJTlQoZ19v
YmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcyksICJpZGVudGlmaWVyIikpOworCisgICAg
YXV0byBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSByZXNvbHZlUXVldWUtPnRha2VDb21w
bGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMoaWRlbnRpZmllcik7CisKKyAgICBpZiAoIWNvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmdldCgpLT5m
aXJzdCk7CisKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKSB7CisgICAgICAgIERO
U0Vycm9yIGVycm9yID0gRE5TRXJyb3I6OlVua25vd247CisKKyAgICAgICAgc3dpdGNoIChzdGF0
dXMpIHsKKyAgICAgICAgY2FzZSBTT1VQX1NUQVRVU19DQU5UX1JFU09MVkU6CisgICAgICAgICAg
ICBlcnJvciA9IEROU0Vycm9yOjpDYW5ub3RSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBE
TlNFcnJvcjo6Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09V
UF9TVEFUVVNfT0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfTsKKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3Vw
X2FkZHJlc3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoRE5TRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBh
ZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1
dG8qIGlwQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2lu
Kj4oc291cF9hZGRyZXNzX2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAg
ICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3Nb
aV0pKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkZHJlc3Nlcyk7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnRha2VDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnModWlu
dDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
YXV0byBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSBtX2NvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycy50YWtlKGlkZW50aWZpZXIpOworCisgICAgaWYgKCFjb21wbGV0aW9uQW5kQ2FuY2Vs
SGFuZGxlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdURk1vdmUo
Y29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpyZW1vdmVDYW5jZWxBbmRDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2NvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0
ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRh
KCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOworfQorCit2b2lkIEROU1Jl
c29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3Qg
aWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRH
UmVmKHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1
dG8gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291
cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9h
c3luY19jb250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigp
KSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssIHRoaXMp
OworCisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVu
dGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CisKKyAgICBtX2NvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxETlNS
ZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworfQorCit2b2lkIEROU1Jl
c29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChhdXRvIGNvbXBsZXRpb25BbmRDYW5j
ZWxIYW5kbGVyID0gbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMudGFrZShpZGVudGlmaWVy
KSkgeworICAgICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbChjb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlci5nZXQoKS0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbkFuZENhbmNlbEhh
bmRsZXIuZ2V0KCktPmZpcnN0KG1ha2VVbmV4cGVjdGVkKEROU0Vycm9yOjpDYW5jZWxsZWQpKTsK
KyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ODZhNmIxMzNjYjk3MzZjYWI3YTY1ZWIxYTE2OGRlZWI4NWU3Y2RiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZVNvdXAgZmluYWwgOiBw
dWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBDb21wbGV0aW9uQW5k
Q2FuY2VsSGFuZGxlcnMgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXIs
IEdSZWZQdHI8R0NhbmNlbGxhYmxlPj47CisKKyAgICBETlNSZXNvbHZlUXVldWVTb3VwKCkgPSBk
ZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRf
dCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0
b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpIGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPENvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4gdGFrZUNvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycyh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNhbmNlbEFuZENv
bXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBz
dGQ6OnVuaXF1ZV9wdHI8Q29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzPj4gbV9jb21wbGV0aW9u
QW5kQ2FuY2VsSGFuZGxlcnM7CisKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVz
b2x2ZVF1ZXVlU291cDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3
ZGRkMjIzM2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYzOTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYg
VVNFKFNPVVApCi0KLSNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Ly8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGls
IHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0g
dHJ1ZTsKLXN0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJv
b2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0
IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRl
bSBpbiB0aGUgbGlzdCBpcwotICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVu
IHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8K
LSAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmls
aXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2Un
cmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIs
IGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0gICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRv
IGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJp
cyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZv
aWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsK
LSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4g
dXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygi
RXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNz
YWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICppc1VzaW5nUHJveHlUeXBlID0g
ZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwotICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5n
SHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJl
c29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JF
U09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJv
b2wqPih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRh
KSk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewot
ICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOwotICAgIGdfb2JqZWN0X2dldChO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRl
U291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJl
c29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAg
Z19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhh
bXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1f
aXNVc2luZ1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZl
ci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZv
ckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJl
c29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9p
ZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJl
ZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCku
Z2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51
dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQot
dm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwot
fQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNh
MmYwMWYyYTE0MDdjMGYwYmNjZjIzNzIxMi4uYmJkNjg0Yjc4MzM2NzgyYWE1ZDBjYzlkODhhYjMw
MTk4MWJmYTAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkKQEAgLTE2MiwxNSArMTY2LDIy
IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1NvY2tldE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAgICAgTmV0d29ya1JUQ1NvY2tldChkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSwgKnRoaXMpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisKIHZvaWQgTmV0d29ya1JUQ1Byb3Zp
ZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JU
Q1Jlc29sdmVyPihbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNz
ZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gTmV0d29y
a1JUQ1Jlc29sdmVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIGlkZW50aWZpZXJdKFdlYkNv
cmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
IXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9
IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuZXJyb3IoKSAhPSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAg
ICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jl
c29sdmVyOjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhyZXN1bHQu
dmFsdWUoKSksIGlkZW50aWZpZXIpOworCisgICAgICAgIGF1dG8gYWRkcmVzc2VzID0gV1RGOjpt
YXAocmVzdWx0LnZhbHVlKCksIFtdIChhdXRvJiBhZGRyZXNzKSB7CisgICAgICAgICAgICByZXR1
cm4gUlRDTmV0d29yazo6SVBBZGRyZXNzIHsgcnRjOjpJUEFkZHJlc3MgeyBhZGRyZXNzLmdldFNp
bkFkZHIoKSB9IH07CisgICAgICAgIH0pOworCisgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3Mo
YWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAgICAgcmVzb2x2ZXItPnN0YXJ0KGFk
ZHJlc3MpOwogICAgIG1fcmVzb2x2ZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc29sdmVy
KSk7CkBAIC0xODIsNiArMTkzLDM0IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpzdG9wUmVz
b2x2ZXIodWludDY0X3QgaWRlbnRpZmllcikKICAgICAgICAgcmVzb2x2ZXItPnN0b3AoKTsKIH0K
IAorI2Vsc2UKKwordm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2
NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gW3RoaXMsIGlkZW50aWZpZXJdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09y
RXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUo
KSkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IFdlYkNvcmU6OkROU0Vycm9y
OjpDYW5jZWxsZWQpCisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBp
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8gYWRkcmVzc2VzID0gV1RGOjptYXAocmVzdWx0LnZhbHVlKCksIFtdIChhdXRvJiBhZGRyZXNz
KSB7CisgICAgICAgICAgICByZXR1cm4gUlRDTmV0d29yazo6SVBBZGRyZXNzIHsgcnRjOjpJUEFk
ZHJlc3MgeyBhZGRyZXNzLmdldFNpbkFkZHIoKSB9IH07CisgICAgICAgIH0pOworCisgICAgICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVy
OjpTZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CisgICAgfTsKKwor
ICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgaWRlbnRpZmllciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6c3RvcFJlc29s
dmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgV2ViQ29yZTo6c3RvcFJlc29sdmVETlMo
aWRlbnRpZmllcik7Cit9CisKKyNlbmRpZgorCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y2xv
c2VMaXN0ZW5pbmdTb2NrZXRzKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIW1faXNMaXN0ZW5pbmdTb2NrZXRBdXRob3JpemVkKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi4w
YThjYTRlNGU2OGM0MWUzMTA3ZDI0ODRiYjY3YmNmNjFlNzBjOWIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5jcHAKQEAgLTMyLDY4ICszMiwzNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGlj
IHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBl
SW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCisvLyBGSVhNRTog
VXNlIHRoZSBmdW5jdGlvbiBhZnRlciByZW1vdmluZyB0aGUgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuCisjaWYgIVBMQVRGT1JNKENPQ09BKQorc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNv
bHZlcj4gTmV0d29ya1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3QgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBB
U1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5kb21h
aW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZv
IGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxO
ZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAgIENG
QXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNz
aW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2Vz
KTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAgYWRk
cmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJlZiBk
YXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2Vz
LCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAgICBh
ZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRk
cmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBsZXRl
ZChhZGRyZXNzZXMpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29s
dmVyPihuZXcgTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7CiB9CisjZW5kaWYKIAotTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRD
UmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICA6IG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCitOZXR3b3JrUlRD
UmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewogfQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6On5OZXR3b3JrUlRD
UmVzb2x2ZXIoKQogewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0
KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBD
Rkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKICAgICBpZiAo
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpVbmtub3duKSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkROU0Vy
cm9yOjpVbmtub3duKSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25z
dCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpKTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgp
LCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUpOwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hv
c3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOwotICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgbV9pZGVu
dGlmaWVyLCBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3AoKQogewotICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1f
aG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOwotICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkp
OwotfQotCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCi17Ci0gICAgaWYgKGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpzdG9wUmVzb2x2ZURO
UyhtX2lkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5N2NkYThjNzIzYmRlMzVlNzI3OC4uMzhlNWY3
NjI3MmM1ODAyYmNiMDNlYWI3MzY0MTgwMDY0OTk2NTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKQEAg
LTI4LDcgKzI4LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiUlRDTmV0d29y
ay5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RO
Uy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNiwyMiArMzYsMTcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIE5ldHdvcmtSVENSZXNvbHZlciB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBF
cnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya1JUQ1Jlc29sdmVyPiBjcmVhdGUodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6
RE5TQ29tcGxldGlvbkhhbmRsZXImJik7CiAKLSAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0g
RXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6
SVBBZGRyZXNzPj4sIEVycm9yPjsKLSAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChBZGRyZXNzZXNPckVycm9yJiYpPjsKKyAgICBOZXR3b3Jr
UlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhh
bmRsZXImJik7CisgICAgdmlydHVhbCB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CiAKLSAgICBleHBs
aWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdv
cmtSVENSZXNvbHZlcigpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKLSAgICB2b2lkIHN0YXJ0KGNvbnN0
IFN0cmluZyYgYWRkcmVzcyk7Ci0gICAgdm9pZCBzdG9wKCk7Ci0KLSAgICB2b2lkIGNvbXBsZXRl
ZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYpOwotCi1wcml2YXRlOgotICAg
IENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgUmV0YWluUHRyPENG
SG9zdFJlZj4gbV9ob3N0OworcHJvdGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsK
KyAgICBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDk0ZGFlNDQ2ZDljNTJiMTgyNzU4ODhlYTdjZWNjYzI0NTYyNWU5ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0
UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3Is
IHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsK
KworICAgIEFTU0VSVChpbmZvKTsKKyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5l
dHdvcmtSVENSZXNvbHZlckNvY29hKj4oaW5mbyk7CisKKyAgICBpZiAoZXJyb3ItPmRvbWFpbikg
eworICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMg
bm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KKyAgICAgICAgcmVzb2x2ZXItPmNvbXBsZXRl
ZChtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6VW5rbm93bikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQm9vbGVhbiByZXN1bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNv
bHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwg
JnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBzaXpl
X3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOworICAgIFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVm
KUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKKyAgICAg
ICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRy
X2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNr
ZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKCphZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29s
dmVyLT5jb21wbGV0ZWQoV1RGTW92ZShhZGRyZXNzZXMpKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtSVENSZXNvbHZlcj4gTmV0d29ya1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3Qg
aWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4o
bmV3IE5ldHdvcmtSVENSZXNvbHZlckNvY29hKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50
aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNj
aGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0
YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9z
dENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhp
cywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hv
c3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0
aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BE
ZWZhdWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0
aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2E6OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxl
ZCkpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpjb21wbGV0ZWQoV2ViQ29y
ZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIGFkZHJlc3Nlc09yRXJyb3IpCit7CisgICAgaWYgKGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFkZHJlc3Nlc09yRXJyb3IpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg0MTk4ZDE2YTAxMmY0MWIzYTFhYzdlN2E1
ZWFhZTNiM2NkYjQwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1
ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIHdo
ZW4gd2UgY29tcGxldGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlNSZXNvbHZlUXVldWVD
Rk5ldC4KK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGZpbmFsIDogcHVibGljIE5ldHdv
cmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0
YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7
CisKKyAgICB2b2lkIGNvbXBsZXRlZChXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYpOwor
Citwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE4YTkxOGZiMmNh
Yzg0ZTVmYTRiNWUyZDcyOWYxNmM3YjZkYTFiZWQuLjhhYzU2YTBkMTA1ZWE5MDdjMjNkYjJmNzhk
ZDMxZTM1YThiNmM3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTE1LDYgKzkxNSw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYw
MDZEMCAvKiBSVENOZXR3b3JrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAq
LzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUw
MEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3
NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgKi87IH07CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRD
TmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJ
NDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMw
MDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdv
cmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMyODcsNiArMzI4OCw4IEBACiAJCTQxMDQ4MkND
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JU
Q1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2
MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3
NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIzNiw2ICs2MjM5LDggQEAKIAkJCQk0MURDNDU5ODFF
M0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJ
CTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAog
CQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywK
KwkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwICovLAorCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oICovLAogCQkJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5oICovLAogCQkJCTQxMzA3NTlEMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0Lm1lc3NhZ2VzLmluICovLApAQCAtMTA2MjEsNiArMTA2MjYsNyBAQAogCQkJCTQxREM0
NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBF
Njc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJC
NTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0
d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgy
ODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZWY3OGY2YTk5ZjNjN2JlZTRmMWM1NDY3MjM2MTY2MmNkZDFkMjViMS4uMjM4NDY2NGUx
MzViM2UxNjU2ZWY2ZjUyNzAzMTE5MWFmZmUxZjMwYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTA3ICBB
bGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0
d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgQWRkZWQgbmV3IHVuaXQgdGVzdHMgZm9yIGhlIHJlc29sdmUg
YW5kIHN0b3BSZXNvbHZlIGZ1bmN0aW9ucy4gV2UgbmVlZCB0byBjb21waWxlIHRoZW0gZm9yIHRo
ZQorICAgICAgICBvdGhlciBwbGF0Zm9ybXMgd2hlbiB0aGUgQVBJcyBhcmUgc3VwcG9ydGVkLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcDoKKwogMjAxOC0wMy0wNiAgRG9taW5p
ayBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQVJNXSBEaXNhYmxl
IHRlc3RzIHRoYXQgcnVuIG91dCBvZiBtZW1vcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IDRhZWY2OTUzY2QxNjE0YmY2Y2YwM2NlMjI0OGFmYjNjNmQyZGU1ZjguLjYy
MDJmNDZiYWYwYjMzNzg1Yzg1Y2FkNzJjNmIyODMzYmU4ODdkNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtODcsNiArODcsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0
V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0NTU1BhcnNlci5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgwMTQ5ZjdmNzJm
ZGYwM2VjMmVlNmE0YzMwNGRjMmZmZmVkOTBlMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIK
KyNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRE5T
Lmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworYm9vbCBkb25lID0gZmFsc2U7
CisKK1RFU1QoRE5TVGVzdCwgY2FuY2VsUmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0
aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmlu
Zygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAg
IEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5T
QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVl
OworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgICAgICBB
U1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVk
KTsKKworICAgICAgICByZXR1cm47CisgICAgfTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBy
ZXNvbHZlRE5TKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgc3RvcFJlc29sdmVETlMoaWRlbnRpZmllcik7CisgICAgVXRpbDo6cnVuKCZkb25l
KTsKK30KKworVEVTVChETlNUZXN0LCBjYW5ub3RSZXNvbHZlRE5TKQoreworICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgY29uc3QgU3RyaW5nIGhvc3RuYW1lID0g
U3RyaW5nKCJub3RhdmFsaWRkb21haW4ubm90YXZhbGlkZG9tYWluIik7CisgICAgdWludDY0X3Qg
aWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFu
ZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUg
eworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfRkFMU0UocmVzdWx0Lmhh
c192YWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocmVzdWx0LmVycm9yKCkgPT0gV2ViQ29y
ZTo6RE5TRXJyb3I6OkNhbm5vdFJlc29sdmUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9Owor
CisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQor
CitURVNUKEROU1Rlc3QsIHJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53
ZWJraXQub3JnIik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nl
c09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworCisgICAgICAgIHJldHVybjsK
KyAgICB9OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlk
ZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRv
bmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335189</attachid>
            <date>2018-03-07 06:41:37 -0800</date>
            <delta_ts>2018-03-07 08:13:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-178855-20180307154136.patch</filename>
            <type>text/plain</type>
            <size>83602</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM0ZjI5MDk3OGQyMzE2
MmNkZWVmYjdlODYzNjZhMjNjYTQ2NjRjNC4uNWYzZTJjYjVlYmZiMzg1MmRlODhhMjAwMTZmZWIx
MDI3NTkxYWNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTAzLTA3ICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0d29y
a1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBG
YWJsZXQuCisKKyAgICAgICAgQWRkIG5ldyBBUEkgaW4gdGhlIEROU1Jlc29sdmVRdWV1ZSBhbGxv
d2luZyB0byByZXZvbHZlIGhvc3RuYW1lcyBhbmQgZ2V0IHRoZSByZXN1bHQuIEFkZCBwbGF0Zm9y
bQorICAgICAgICBzcGVjaWZpYyBjb2RlIGZvciBzb3VwIHBsYXRmb3JtIGFuZCByZWZhY3RvciB0
aGUgb3RoZXIgcGxhdGZvcm1zLiBBZGRlZCBuZXcgQVBJIHRvIHRoZSBETlMgQVBJIGhlYWRlcgor
ICAgICAgICBhbmQgbW92ZSB0aGUgZ2VuZXJhbCBjb2RlIHRvIHRoZSBETlMuY3BwIGZpbGUsIHRo
YXQgd2F5IHdlIGNhbiByZXVzZSB0aGF0IGNvZGUgaW4gYWxsIHRoZSBwbGF0Zm9ybXMKKyAgICAg
ICAgYW5kIGxlYXZlIHRoZSBSZXNvbHZlUXVldWUgY2xhc3Mgb2YgdGhlIHBsYXRmb3JtcyBpbiBh
IGZpbGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBhIHJlZmFjdG9y
LgorCisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZTogTW92ZSB0aGUgRE5TQ0ZOZXQg
Y2xhc3MgdG8gRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuCisgICAgICAgICogUGxhdGZvcm1NYWMuY21h
a2U6IERpdHRvLgorICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGQgdGhlIEROUy5jcHAgZm9yIGNv
bXBpbGF0aW9uLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IE1vdmUgdGhlIEROU0NGTmV0
IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUNGTmV0LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTW92ZSB0aGUgRE5TQ0ZOZXQgY2xhc3MgdG8gRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQsIGFkZCB0aGUgRE5TLmNwcAorICAgICAgICBmb3IgY29tcGlsYXRpb24uIEFk
ZCB0aGUgbmV3IEROU1Jlc29sdmVRdWV1ZUNGTmV0IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3Jt
L0N1cmwuY21ha2U6IE1vdmUgdGhlIEROU0NGTmV0IGNsYXNzIHRvIEROU1Jlc29sdmVRdWV1ZUN1
cmwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwOiBBZGQgdGhpcyBmaWxlIHdp
dGggdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEROUyBmdW5jdGlvbnMgZm9yCisg
ICAgICAgIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmV0Y2hETlMp
OiBDb3BpZWQgZnJvbSBldmVyeSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVETlMpOiBBZGQgdGhlIGZ1bmN0aW9uLCByZXNvbHZlcyBhIGhvc3RuYW1l
LCByZWNlaXZlcyB0aGUgaWRlbnRpZmllciBvZiB0aGUgb3BlcmF0aW9uCisgICAgICAgIGFuZCB0
aGUgY29tcGxldGlvbiBoYW5kbGVyLgorICAgICAgICAoV2ViQ29yZTo6c3RvcFJlc29sdmVETlMp
OiBBZGQgdGhlIGZ1bmN0aW9uLCBzdG9wcyBhIHJlc29sdXRpb24gb3BlcmF0aW9uLCByZWNlaXZl
cyB0aGUgaWRlbnRpZmllcgorICAgICAgICBvZiB0aGUgb3BlcmF0aW9uLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRE5TLmg6IEFkZCB0aGUgbmV3IEFQSXMgcmVzb2x2ZUROUyBhbmQgc3Rv
cFJlc29sdmVETlMgd2l0aCB0aGUgY2xhc3NlcyB1c2VkIGZvciB0aGUKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OklQQWRkcmVzcyk6IEFkZCB0
aGlzIGNsYXNzIHVzZWQgdG8gc2VuZCB0aGUgcmVzb2x2ZWQgYWRkcmVzcyBpbmZvcm1hdGlvbiwg
aXQgZG9lcworICAgICAgICBub3QgZGVwZW5kIG9uIGxpYndlYnJ0YyBydGMgY2xhc3Nlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OklQQWRkcmVzczo6Z2V0KTogR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBz
dHJ1Y3Qgc29ja2FkZHJfaW4gaW4gdGhlIElQQWRkcmVzcyBjbGFzcy4KKyAgICAgICAgKFdlYkNv
cmU6OkROU0NvbXBsZXRpb25IYW5kbGVyKTogQWRkIHRoaXMgQ29tcGxldGlvbkhhbmRsZXIgdHlw
ZSB0byBiZSB1c2VkIHdoZW4gcmVzb2x2aW5nIHRoZSBETlMKKyAgICAgICAgYWRkcmVzcy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHA6IEFkZCB0aGUgRE5T
UmVzb2x2ZVF1ZXVlIHBsYXRmb3JtIGluc3RhbnRpYXRpb24gaW4gdGhlIHNpbmdsZXRvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKTogVXNlIEROU1Jlc29s
dmVRdWV1ZSBwbGF0Zm9ybSBjbGFzc2VzIHdoZW4gY3JlYXRpbmcgdGhlIHNpbmdsZXRvbi4uCisg
ICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJlc29sdmUpOiBBZGQgdGhpcyBtZXRo
b2QgdG8gZ2V0IHRoZSBhZGRyZXNzIG9mIGEgaG9zdG5hbWUsIGl0IHNlbmRzIHRoZQorICAgICAg
ICBpZGVudGlmaWVyIGFuZCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHRvIHVzZSB3aGVuIHJldHVy
bmluZyB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpzdG9w
UmVzb2x2ZSk6IEFkZCB0aGlzIG1ldGhvZCB0byBzdG9wIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB3
aGVuIHJlcXVpcmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
Lmg6IEFkZCB0aGUgbmV3IG1ldGhvZHMgYW5kIG1ha2UgdGhlIGNsYXNzIGFic3RyYWN0LCBzbyB0
aGF0IGV2ZXJ5CisgICAgICAgIHBsYXRmb3JtIGNhbiBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9ucy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQu
Y3BwLgorICAgICAgICBBZGQgdGhlIG1ldGhvZHMgdG8gdGhlIG5ldyBjbGFzcyBETlNSZXNvbHZl
UXVldWVDRk5ldCwgbW92ZSB0aGUgcHJlZmV0Y2hETlMgdG8gdGhlIEROUy5jcHAgZ2VuZXJhbAor
ICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U1Jlc29sdmVRdWV1ZUNGTmV0Lmg6IEFkZCB0aGUgbmV3IGNsYXNzIGluaGVyaXRpbmcgZnJvbSB0
aGUgRE5TUmVzb2x2ZVF1ZXVlLiBBZGQgdGhlCisgICAgICAgIG5ldyBtZXRob2RzLCB3ZSBoYXZl
IHRvIGltcGxlbWVudCB0aGVzZSBtZXRob2RzIGFuZCBtb3ZlIHRoZSBOZXR3b3JrUlRDUmVzb2x2
ZXIgZm9yIENPQ09BIGNvZGUgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZUNGOjpyZXNvbHZlKTogRHVtbXkgbWV0aG9kLCBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDRjo6c3RvcFJlc29sdmUpOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaDogQWRk
IHRoZSBuZXcgY2xhc3MgaW5oZXJpdGluZyBmcm9tIHRoZSBETlNSZXNvbHZlUXVldWUuCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpyZXNvbHZlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVDdXJsOjpzdG9wUmVzb2x2ZSk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmg6IE5l
dyBjbGFzcyBpbmhlcml0aW5nIGZyb20gdGhlIEROU1Jlc29sdmVRdWV1ZSBjbGFzcywgYWRkaW5n
CisgICAgICAgIGEgSGFzTWFwIHdpdGggdGhlIGFjdGl2ZSBvcGVyYXRpb25zLCBpdCBhbGxvd3Mg
c3RvcHBpbmcgdGhlbS4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2
ZVF1ZXVlU291cC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRE5TU291cC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlZFdpdGhPYnNl
cnZlckNhbGxiYWNrKTogQ2FsbGVkIHdoZW4gdGhlIHJlc3VsdCBhZGRyZXNzIGZyb20gdGhlIHNv
dXAgcGxhdGZvcm0gaXMgcmVhZHksCisgICAgICAgIHNlbmRzIHRoZSBhZGRyZXNzIHRvIHRoZSBj
b21wbGV0aW9uIGhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3Vw
OjpyZXNvbHZlKTogTGF1bmNoIHRoZSByZXNvbHZlIG9wZXJhdGlvbiB3aXRoIHRoZSBzb3VwIGxp
YnJhcnkuCisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpzdG9wUmVzb2x2
ZSk6IFN0b3AgdGhlIHJlc29sdmUgb3BlcmF0aW9uIG9uIHByb2Nlc3Mgd2l0aCBhIEdDYW5jZWxs
YWJsZS4KKwogMjAxOC0wMy0wNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0Nvb3JkR3JhcGhpY3NdIFJlbW92ZSB1bnVzZWQgc2Nyb2xsaW5nLXJlbGF0
ZWQgY29kZSBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIsIENvb3JkaW5hdGVkR3JhcGhpY3Mgc3RhY2sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODQxM2Y4NzlhMzI1NDIzZTYwMGJjMmFkYzQ0NWQ3YTJjNmI4M2Y1Ni4uZmY5
Y2FiZDBlOTZkZWE5MTUwOGYzY2RmNzc3MDgxZDlkNDkwYzJhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNSBAQAorMjAxOC0wMy0wNyAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNv
bT4KKworICAgICAgICBNYWtlIE5ldHdvcmtSVENSZXNvbHZlciBwb3J0IGFnbm9zdGljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg4NTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIENyZWF0ZSBhIHNwZWNp
ZmljIENvY29hIGNsYXNzIHRvIGlzb2xhdGUgdGhlIGdlbmVyaWMgY29kZSBpbiB0aGUgYmFzZSBj
bGFzcywgbWFrZSB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBwb3J0CisgICAgICAgIGFnbm9zdGlj
IGFuZCBkZXBlbmRlbnQgb24gRE5TIEFQSSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IHdoaWNo
IGVuY2Fwc3VsYXRlcyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGV0YWlscy4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOiBDcmVhdGUgYW4g
YWxpYXMgY2xhc3MgbmFtZSBkZWZpbmVkIHBlciBwbGF0Zm9ybSB0byBpbnN0YW50aWF0ZSB0aGUg
cmVzb2x2ZXIuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlUmVz
b2x2ZXIpOiBVc2VkIHRoZSBhbGlhcyBjbGFzcyBuYW1lIGFuZCByZWNlaXZlIGEgbmV3IElQQWRk
cmVzcyBjbGFzcyB0aGF0IGlzIG5vdAorICAgICAgICBkZXBlbmRlbnQgb24gcnRjIGxpYndlYnJ0
YyBsaWJyYXJ5LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVz
b2x2ZXIuY3BwOiBSZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuIFVzZSB0aGUgRE5T
IEFQSSB0byBpbXBsZW1lbnQgdGhlCisgICAgICAgIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgaW4g
dGhlIGRlZmF1bHQgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcy4gQWRkIHRoZSBpZGVudGlmaWVyIG9m
IHRoZSByZXNvbHZlIG9wZXJhdGlvbiB0byB0aGUgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSVENSZXNvbHZlcjo6TmV0d29ya1JUQ1Jlc29sdmVyKTogQWRkIHRoZSBpZGVudGlmaWVy
IGluIHRoZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29s
dmVyOjp+TmV0d29ya1JUQ1Jlc29sdmVyKTogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBj
b2RlLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OmNvbXBsZXRlZCk6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2ZXI6OnN0YXJ0KTogQWRkIGEg
bmV3IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBETlMgQVBJLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUlRDUmVzb2x2ZXI6OnN0b3ApOiBEaXR0bworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuaDogUmVtb3ZlIHRoZSBwbGF0Zm9ybSBzcGVjaWZp
YyBjb2RlIGFuZCB1c2UgdGhlIEROU1Jlc29sdmVRdWV1ZSBmb3IgYSBnZW5lcmFsCisgICAgICAg
IHNvbHV0aW9uIHRvIGltcGxlbWVudCB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gQXZvaWQg
dXNpbmcgdGhlIElQQWRkcmVzcyBjbGFzcyB0aGF0IGRlcGVuZHMgb24gbGlid2VydGMgY2xhc3Nl
cyB0byBtYWtlCisgICAgICAgIGl0IG1vcmUgZ2VuZXJhbCByZWdhcmRpbmcgRE5TIG5hbWUgcmVz
b2x1dGlvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydCk6IE1h
a2UgdGhpcyBjbGFzcyB2aXJ0dWFsLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUmVzb2x2
ZXI6OnN0b3ApOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuY3BwOiBDb3BpZWQgQ29jb2EgY29kZSBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHAuCisgICAgICAg
IE5vdyB0aGlzIGNsYXNzIG92ZXJyaWRlcyB0aGUgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0aGF0
IHVzZSBETlMsIGNvY29hIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgdGhlIEROUyBtZXRob2Rz
IGluIHRoZSBmdXR1cmUgYW5kCisgICAgICAgIHJlbW92ZSB0aGlzIGNsYXNzLCBtYWtpbmcgc3Vy
ZSBhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNsYXNzIGlzIGluIHRoZSBwbGF0Zm9ybSBkaXJl
Y3RvcnkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ckNvY29hLmg6IENvcGllZCBDb2NvYSBjb2RlIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmguCisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6IEFkZCBOZXR3b3JrUlRDUmVzb2x2ZXIgY29tcGlsYXRpb24gZm9yIEdUSy4KKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIHRoZSBOZXR3b3JrUlRD
UmVzb2x2ZXJDb2NvYSBjbGFzcyB0byB0aGUgY29tcGlsYXRpb24uCisKIDIwMTgtMDMtMDYgIE1z
MmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBJbXBsZW1lbnQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IGVlN2I0MDcyMGYwZDhm
NmZiMjJlYTE2YzdmZmNmMmM4ZDc4ZWQwZWMuLjJjMDdmM2EyZDcyZDdhNzEzOTlkZWVmZGM5MjU3
OTZhY2Q4ZTEwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtNTAs
NyArNTAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2ll
U3RvcmFnZUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQ3JlZGVudGlhbFN0b3Jh
Z2VDRk5ldC5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorICAgIHBs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsv
Y2YvTG9hZGVyUnVuTG9vcENGLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDNlODcy
MzM4OTYxMmRkZDU3M2M2YmQ1M2FiYzQ4NzAxM2E0NDczNmYuLjgwNTIwYWIwZmNlMGRmNDgzMmY3
ODdiNDVjMTEwYThhZjM4NzgxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MTMs
NyArNDEzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KIAotICAgIHBsYXRm
b3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9jZi9ETlNS
ZXNvbHZlUXVldWVDRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDIzYTk0MDM0ZWE5MzQ0MzkzZjk5ZDA0YTE5MjgyZWIxYzg2NTZk
NWMuLjc4OGNmZGI0NDY2ODUzZjJiZmYzM2RmNjIyYWRkODMyMjhjNzI0YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNzA3LDYgKzE3MDcsNyBAQCBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ29va2llLmNwcAogcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsQmFzZS5jcHAKIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCitw
bGF0Zm9ybS9uZXR3b3JrL0ROUy5jcHAKIHBsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmNwcAogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKIHBsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA4NTQ5YmUzNDEzNjcy
YTA5NmVhZTIyN2Y5YTZkYWZjNDQzYzYxMmNiLi41YmUyNTViY2U0MmYwZWNhMTQzYjhiNzMzZDMy
YzAyMzU1ODhlZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ4Miw3ICs0ODIsNyBA
QCBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0K
IHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suY3BwCiBwbGF0Zm9y
bS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmNwcAogCi1wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU0NGTmV0LmNwcAorcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5j
cHAKIHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKIHBsYXRmb3Jt
L25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDhjOGQxZjgwMzdmYjg5MGIzMzRiN2Uw
MGE0ZDk4MGRjMjdhM2NmMC4uNTNlZWMyYjAyNjNhYjAyZGUwMmIwMGM3MDViYTc0NWZkZWU5NTU2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjI1NSw2ICsyMjU1LDcgQEAKIAkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8q
IFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NkQxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUMx
MkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0VFNjg0NkYxMkQyNkUzODAwRTcz
MjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2
ZVF1ZXVlQ0ZOZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQy
NkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaEJvZHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdGNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5oICovOyB9OwogCQk3
RjRDOTZERDFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNpbmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdGNEM5NkQ5MUFENDQ4MzUw
MDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU2luay5oICovOyB9OwpAQCAtOTYwNCw2ICs5NjA1
LDcgQEAKIAkJN0VFNjg0NUExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdENGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlc291cmNlUmVxdWVzdENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0VFNjg0NUMxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdENGTmV0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFRTY4NDVDMTJEMjZFMzgwMEZGOTQxNSAvKiBETlNS
ZXNvbHZlUXVldWVDRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBETlNS
ZXNvbHZlUXVldWVDRk5ldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1
RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoQm9keS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoQm9keS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdGNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MSAvKiBKU1Jl
YWRhYmxlU3RyZWFtU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1JlYWRhYmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMjEyNSw4ICsxMjEyNyw5IEBACiAJCUIyRTRFQzk1MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkda
b29tRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1pvb21FdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkU0RUM5NjBEMDBDMjJCMDA0MzI2
NDMgLyogU1ZHWm9vbUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHWm9vbUV2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJFRDk3NzAwQjFGNTVDRTAw
MjU3RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBRjhFMTMyMTI1NjVBNDQ0NTIzMEZGNyAvKiBETlMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE5TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBETlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QjJGMzRGRTgwRTgyRjgyNzAwRjYyN0NEIC8qIEROU0NGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU0NGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1
ZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEUwQUI3NUE2
RTAwMEU1QUM0IC8qIEpTU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNDNEYwQUI3NUE2RTAwMEU1QUM0IC8qIEpT
U1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyRkEzQzUwMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR0FuaW1hdGVkQW5nbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQW5pbWF0ZWRBbmdsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODcyMSw2ICsxODcyNCw3IEBACiAJ
CQkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJ
CQkJRTRBMDA3ODQxQjgyMEVEMzAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCAqLywKIAkJ
CQlFNEEwMDc4MjFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCAqLywKKwkJCQkx
QUY4RTEzMjEyNTY1QTQ0NDUyMzBGRjcgLyogRE5TLmNwcCAqLywKIAkJCQlCMkYzNEZFNTBFODJG
ODE0MDBGNjI3Q0QgLyogRE5TLmggKi8sCiAJCQkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8q
IEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8sCiAJCQkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYwIC8q
IEROU1Jlc29sdmVRdWV1ZS5oICovLApAQCAtMjM0NDcsNyArMjM0NTEsOCBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmggKi8sCiAJCQkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRl
SW5mby5oICovLAotCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5ldC5jcHAg
Ki8sCisJCQkJQjJGMzRGRTgwRTgyRjgyNzAwRjY0OENEIC8qIEROU1Jlc29sdmVRdWV1ZUNGTmV0
LmNwcCAqLywKKwkJCQk3RUU2ODQ1QzEyRDI2RTM4MDBGRjk0MTUgLyogRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQuaCAqLywKIAkJCQk3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRh
U3RyZWFtQ0ZOZXQuaCAqLywKIAkJCQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwICovLApAQCAtMjczMTEsNiArMjczMTYsNyBAQAogCQkJ
CUZEMzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIEROU1Jlc29sdmVRdWV1ZUNG
TmV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUY0MDA5NzY1NzY2MDA1ODI2RDkgLyogRG9j
dW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBE
b2N1bWVudEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjNEMDk3NjU3NjYw
MDU4MjZEOSAvKiBEb2N1bWVudEZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DdXJsLmNtYWtlCmluZGV4IDRhODJlYjA5OWY1ZjI3MjBjYmUzZDI1ZDM2OTEwMzViNTZj
MGJjZjguLjQ4MDYwYjg1M2JlY2M5ZGJiMTkzZWM2YmM4OTI4YTc0YzM4OWFlODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3VybC5jbWFrZQpAQCAtMjEsNyArMjEsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3Bw
CiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5jcHAKLSAgICBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
RE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlT
ZXJ2ZXJDdXJsLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3Vy
bC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNTb3VwLnR4dAppbmRleCA4ZTQ3ZDYy
YTM4NjMxMjcyMjZlZWQ5NDcxYjNkMzI4NmMxYjI5Nzk1Li5kNjRmY2ZiZWEyODE0N2RhZGY0MzBi
MmZmYjRjMGZlYTYwYjk1ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
b3VyY2VzU291cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAu
dHh0CkBAIC0yNyw3ICsyNyw3IEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3Vw
LmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3Jl
ZGVudGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3Bw
CitwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9HUmVmUHRyU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2Vy
dmVyU291cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RE5TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMTEyMmRiM2Q4NjdlYmU2ZGMwNzI5MjEyMGZlZTk3NmUyMzgyNTMwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuY3BwCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE4IElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROUy5oIgorCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLmFkZChob3N0
bmFtZSk7Cit9CisKK3ZvaWQgcmVzb2x2ZUROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKGhvc3RuYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlOjpz
aW5nbGV0b24oKS5yZXNvbHZlKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgc3RvcFJlc29sdmVETlModWludDY0X3QgaWRlbnRpZmll
cikKK3sKKyAgICBXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpLnN0b3BSZXNv
bHZlKGlkZW50aWZpZXIpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0ROUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMu
aAppbmRleCAyOTBmNDA2MzRjODU4OGJkMWUzYjJlNmQ3ZGMwM2M1MzcxNzVlNjJjLi5iNmI1MTg5
M2QxNmViZjMxMTE3NDYyMjNmMTg1OTM5YWUwOTY5NjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRE5TLmgKQEAgLTIzLDE0ICsyMywzOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIEROU19oCi0jZGVmaW5lIEROU19oCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyNpbmNsdWRlIDxu
ZXRpbmV0L2luLmg+CisjZWxpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8d2luc29jazIuaD4K
KyNlbmRpZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJUEFkZHJlc3MgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IElQQWRkcmVzcyhjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4mIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtZW1zZXQoJm1fYWRkcmVzcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikp
OworICAgICAgICBtX2FkZHJlc3MgPSBhZGRyZXNzOworICAgIH0KKworICAgIGNvbnN0IHN0cnVj
dCBpbl9hZGRyJiBnZXRTaW5BZGRyKCkgeyByZXR1cm4gbV9hZGRyZXNzLnNpbl9hZGRyOyB9Owor
Citwcml2YXRlOgorICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtX2FkZHJlc3M7Cit9OworCitlbnVt
IGNsYXNzIEROU0Vycm9yIHsgVW5rbm93biwgQ2Fubm90UmVzb2x2ZSwgQ2FuY2VsbGVkIH07CisK
K3VzaW5nIEROU0FkZHJlc3Nlc09yRXJyb3IgPSBFeHBlY3RlZDxWZWN0b3I8V2ViQ29yZTo6SVBB
ZGRyZXNzPiwgRE5TRXJyb3I+OwordXNpbmcgRE5TQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRE5TQWRkcmVzc2VzT3JFcnJvciYmKT47CisKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci19CitXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlc29sdmVETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0
X3QgaWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0b3BSZXNvbHZlRE5TKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi0jZW5kaWYKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmNw
cAppbmRleCBmZTNkOGM5MjUzYzA5MjJkYzBkZjU1ODU1M2Q2MjVmYTc2NGVlZDE2Li44MDE3NzI2
OTJlMmVlM2MwM2M2YzliOTU5NTlkZjFmZjU1NTExODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuY3BwCkBAIC0yNyw2ICsyNywx
NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgog
CisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlU291cC5oIgorI2VsaWYg
VVNFKENVUkwpCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIgorI2VsaWYgVVNFKENG
KQorI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZUNGTmV0LmgiCisjZW5kaWYKKwogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw3ICs1
OSw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHJlc29sdmluZ1JldHJ5RGVsYXkgeyAxMDBfbXMg
fTsKIAogRE5TUmVzb2x2ZVF1ZXVlJiBETlNSZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZT4gcXVldWU7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtPiBxdWV1ZTsKIAogICAg
IHJldHVybiBxdWV1ZTsKIH0KQEAgLTU5LDcgKzY3LDYgQEAgRE5TUmVzb2x2ZVF1ZXVlJiBETlNS
ZXNvbHZlUXVldWU6OnNpbmdsZXRvbigpCiBETlNSZXNvbHZlUXVldWU6OkROU1Jlc29sdmVRdWV1
ZSgpCiAgICAgOiBtX3RpbWVyKCp0aGlzLCAmRE5TUmVzb2x2ZVF1ZXVlOjp0aW1lckZpcmVkKQog
ICAgICwgbV9yZXF1ZXN0c0luRmxpZ2h0KDApCi0gICAgLCBtX2lzVXNpbmdQcm94eSh0cnVlKQog
ewogICAgIC8vIGlzVXNpbmdQcm94eSB3aWxsIHJldHVybiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBt
X2lzVXNpbmdQcm94eSBhdCBmaXJzdCBvbgogICAgIC8vIHBsYXRmb3JtcyB0aGF0IGhhdmUgYW4g
YXN5bmNocm9ub3VzIGltcGxlbWVudGF0aW9uIG9mIHVwZGF0ZUlzVXNpbmdQcm94eSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ROU1Jlc29sdmVRdWV1ZS5oCmluZGV4
IDA3YjhmZGNiNjJmZmZlNTY0NWY5MDA3ZTJmNDE4MDUwZTlmODExYjguLjNhYjk3YjEwMWM2ODNh
NmQ0OTRhZmE0MmM1Y2VkZTBkYWM3NGMyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRE5TUmVzb2x2ZVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlNSZXNvbHZlUXVldWUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRl
ZiBETlNSZXNvbHZlUXVldWVfaAogI2RlZmluZSBETlNSZXNvbHZlUXVldWVfaAogCisjaW5jbHVk
ZSAiRE5TLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDI5ICs0MCwzMyBAQCBjbGFzcyBETlNSZXNvbHZlUXVl
dWUgewogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxETlNSZXNvbHZlUXVldWU+OwogCiBwdWJs
aWM6CisgICAgRE5TUmVzb2x2ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+RE5TUmVzb2x2ZVF1ZXVl
KCkgPSBkZWZhdWx0OworCiAgICAgc3RhdGljIEROU1Jlc29sdmVRdWV1ZSYgc2luZ2xldG9uKCk7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpID0gMDsKICAgICB2b2lkIGFk
ZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlY3JlbWVudFJlcXVlc3RDb3Vu
dCgpCiAgICAgewogICAgICAgICAtLW1fcmVxdWVzdHNJbkZsaWdodDsKICAgICB9CiAKLXByaXZh
dGU6Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlKCk7Ci0KK3Byb3RlY3RlZDoKICAgICBib29sIGlzVXNp
bmdQcm94eSgpOwogCi0gICAgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHkoKTsKLSAgICB2b2lkIHBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNVc2luZ1Byb3h5IHsg
dHJ1ZSB9OwogCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJc1VzaW5nUHJveHko
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAKICAgICBUaW1lciBtX3RpbWVyOwogCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fbmFtZXM7CiAgICAgc3RkOjphdG9taWM8aW50PiBtX3JlcXVlc3Rz
SW5GbGlnaHQ7Ci0gICAgYm9vbCBtX2lzVXNpbmdQcm94eTsKICAgICBNb25vdG9uaWNUaW1lIG1f
bGFzdFByb3h5RW5hYmxlZFN0YXR1c0NoZWNrVGltZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk3OWE1N2Q5ZDgyMGVkMTNiMDAyZmQxY2QyZDdjODZlOGUzNzIwMmMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsaW4gSmFja3NvbiAgPGNvbGxp
bmpAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1
ZS5oIgotCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGTmV0d29yay5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVk
ZSAiTG9hZGVyUnVuTG9vcENGLmgiCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnVw
ZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJv
eHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7
Ci0gICAgaWYgKCFwcm94eVNldHRpbmdzKSB7Ci0gICAgICAgIG1faXNVc2luZ1Byb3h5ID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0
dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3Jl
YXRlQ0ZVUkwoKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotCi0g
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRvcHRDRihDRk5ldHdv
cmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5ID0gYWRvcHRDRihD
Rk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBwcm94eVNldHRpbmdz
LmdldCgpKSk7Ci0KLSAgICBDRkluZGV4IGh0dHBQcm94eUNvdW50ID0gQ0ZBcnJheUdldENvdW50
KGh0dHBQcm94eUFycmF5LmdldCgpKTsKLSAgICBDRkluZGV4IGh0dHBzUHJveHlDb3VudCA9IENG
QXJyYXlHZXRDb3VudChodHRwc1Byb3h5QXJyYXkuZ2V0KCkpOwotICAgIGlmIChodHRwUHJveHlD
b3VudCA9PSAxICYmIENGRXF1YWwoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGh0dHBQcm94eUFycmF5LmdldCgp
LCAwKSksIGtDRlByb3h5VHlwZUtleSksIGtDRlByb3h5VHlwZU5vbmUpKQotICAgICAgICBodHRw
UHJveHlDb3VudCA9IDA7Ci0gICAgaWYgKGh0dHBzUHJveHlDb3VudCA9PSAxICYmIENGRXF1YWwo
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGh0dHBzUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVL
ZXkpLCBrQ0ZQcm94eVR5cGVOb25lKSkKLSAgICAgICAgaHR0cHNQcm94eUNvdW50ID0gMDsKLQot
ICAgIG1faXNVc2luZ1Byb3h5ID0gaHR0cFByb3h5Q291bnQgfHwgaHR0cHNQcm94eUNvdW50Owot
fQotCi1zdGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0
SW5mb1R5cGUsIGNvbnN0IENGU3RyZWFtRXJyb3IqLCB2b2lkKikKLXsKLSAgICBETlNSZXNvbHZl
UXVldWU6OnNpbmdsZXRvbigpLmRlY3JlbWVudFJlcXVlc3RDb3VudCgpOyAvLyBJdCdzIG9rIHRv
IGNhbGwgc2luZ2xldG9uKCkgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRoZSBzdGF0aWMgdmFy
aWFibGUgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZCBieSBub3cuCi0gICAgQ0ZSZWxlYXNl
KHRoZUhvc3QpOwotfQotCi12b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQot
ICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhO
YW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKLSAgICBpZiAoIWhvc3Qp
IHsKLSAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAg
fTsKLSAgICBDRkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9z
dCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KLSAgICBCb29sZWFuIHJl
c3VsdCA9IENGSG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRl
eHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotI2lmICFQTEFURk9STShX
SU4pCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BH
ZXRNYWluKCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0jZWxzZQotICAgIC8vIE9uIFdpbmRv
d3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRocmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hl
cmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCi0gICAgQ0ZIb3N0U2NoZWR1bGVXaXRo
UnVuTG9vcChsZWFrZWRIb3N0LCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7Ci0jZW5kaWYKLSAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtD
Rkhvc3RBZGRyZXNzZXMsIDApOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoaG9zdG5h
bWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5n
bGV0b24oKS5hZGQoaG9zdG5hbWUpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMwZGFlZTY4OTQyMjAzN2U3Nzg0ZGQ4N2E3OTY4NzY0OWY1ZmQ2YTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVR
dWV1ZUNGTmV0LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsaW4gSmFja3NvbiAgPGNvbGxpbmpAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkROU1Jlc29s
dmVRdWV1ZUNGTmV0LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IlRpbWVyLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgor
I2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0Ojp1cGRhdGVJc1VzaW5nUHJveHkoKQoreworICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29y
a0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOworICAgIGlmICghcHJveHlTZXR0aW5ncykgewor
ICAgICAgICBtX2lzVXNpbmdQcm94eSA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBs
ZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRw
UHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJM
LmdldCgpLCBwcm94eVNldHRpbmdzLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGh0dHBzUHJveHlBcnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0
cHNDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOworCisgICAgQ0ZJbmRleCBodHRw
UHJveHlDb3VudCA9IENGQXJyYXlHZXRDb3VudChodHRwUHJveHlBcnJheS5nZXQoKSk7CisgICAg
Q0ZJbmRleCBodHRwc1Byb3h5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoaHR0cHNQcm94eUFycmF5
LmdldCgpKTsKKyAgICBpZiAoaHR0cFByb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlv
bmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChodHRwUHJveHlBcnJheS5nZXQoKSwgMCkpLCBrQ0ZQcm94eVR5cGVLZXkpLCBrQ0ZQ
cm94eVR5cGVOb25lKSkKKyAgICAgICAgaHR0cFByb3h5Q291bnQgPSAwOworICAgIGlmIChodHRw
c1Byb3h5Q291bnQgPT0gMSAmJiBDRkVxdWFsKENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChodHRwc1Byb3h5QXJy
YXkuZ2V0KCksIDApKSwga0NGUHJveHlUeXBlS2V5KSwga0NGUHJveHlUeXBlTm9uZSkpCisgICAg
ICAgIGh0dHBzUHJveHlDb3VudCA9IDA7CisKKyAgICBtX2lzVXNpbmdQcm94eSA9IGh0dHBQcm94
eUNvdW50IHx8IGh0dHBzUHJveHlDb3VudDsKK30KKworc3RhdGljIHZvaWQgY2xpZW50Q2FsbGJh
Y2soQ0ZIb3N0UmVmIHRoZUhvc3QsIENGSG9zdEluZm9UeXBlLCBjb25zdCBDRlN0cmVhbUVycm9y
Kiwgdm9pZCopCit7CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRS
ZXF1ZXN0Q291bnQoKTsgLy8gSXQncyBvayB0byBjYWxsIHNpbmdsZXRvbigpIGZyb20gYSBzZWNv
bmRhcnkgdGhyZWFkLCB0aGUgc3RhdGljIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlh
bGl6ZWQgYnkgbm93LgorICAgIENGUmVsZWFzZSh0aGVIb3N0KTsKK30KKwordm9pZCBETlNSZXNv
bHZlUXVldWVDRk5ldDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFJldGFpblB0cjxDRkhvc3RSZWY+
IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpKTsKKyAgICBpZiAoIWhvc3QpIHsKKyAgICAgICAgZGVjcmVtZW50UmVx
dWVzdENvdW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDRkhvc3RDbGllbnRD
b250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAgfTsKKyAgICBDRkhvc3RSZWYgbGVha2Vk
SG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2VkIGZyb20g
Y2xpZW50Q2FsbGJhY2soKS4KKyAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENsaWVudChs
ZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRleHQpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworI2lmICFQTEFURk9STShXSU4pCisgICAgQ0ZIb3N0U2NoZWR1bGVX
aXRoUnVuTG9vcChsZWFrZWRIb3N0LCBDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7CisjZWxzZQorICAgIC8vIE9uIFdpbmRvd3MsIHdlIHJ1biBhIHNlcGFyYXRlIHRo
cmVhZCB3aXRoIENGUnVuTG9vcCwgd2hpY2ggaXMgd2hlcmUgY2xpZW50Q2FsbGJhY2sgd2lsbCBi
ZSBjYWxsZWQuCisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChsZWFrZWRIb3N0LCBsb2Fk
ZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisjZW5kaWYKKyAgICBDRkhvc3RT
dGFydEluZm9SZXNvbHV0aW9uKGxlYWtlZEhvc3QsIGtDRkhvc3RBZGRyZXNzZXMsIDApOworfQor
Cit2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0OjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgLyogaG9z
dG5hbWUgKi8sIHVpbnQ2NF90IC8qIGlkZW50aWZpZXIgKi8sIEROU0NvbXBsZXRpb25IYW5kbGVy
JiYgLyogY29tcGxldGlvbkhhbmRsZXIgKi8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBETlNSZXNvbHZlUXVldWVDRk5ldDo6c3RvcFJlc29sdmUodWludDY0X3QgLyogaWRl
bnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU1Jlc29sdmVRdWV1ZUNG
TmV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2FjNTY4ZGM4YzllMzYyMTQ2ZDgzMGYzNmU3NjM2NzAzNGQ2NGNh
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNv
bHZlUXVldWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBETlNSZXNvbHZlUXVl
dWVDRk5ldCBmaW5hbCA6IHB1YmxpYyBETlNSZXNvbHZlUXVldWUgeworcHVibGljOgorICAgIERO
U1Jlc29sdmVRdWV1ZUNGTmV0KCkgPSBkZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpIGZp
bmFsOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7Cisg
ICAgdm9pZCBwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJikgZmluYWw7Cit9OworCit1c2lu
ZyBETlNSZXNvbHZlUXVldWVQbGF0Zm9ybSA9IEROU1Jlc29sdmVRdWV1ZUNGTmV0OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRE5TQ3VybC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMzFmNTk4NGMwY2U4ZWZhZTg5ODFkOTNhMjgz
MGNhMDcxY2EwYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU0N1cmwuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRE5TLmgiCi0jaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCi0KLSNpZiBVU0UoQ1VS
TCkKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnVwZGF0ZUlzVXNpbmdQcm94eSgpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2
ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiAvKiBob3N0bmFtZSAqLykKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1
cmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUyMzFhNzc5ZWEzMjY5NTYzOTRiNTYxOGVkYTVkYWYxMDIwZWJl
NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvRE5TUmVzb2x2ZVF1ZXVlQ3VybC5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlQ3VybC5oIgorCisjaWYgVVNF
KENVUkwpCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEROU1Jlc29sdmVRdWV1ZUN1cmw6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIC8qIGhvc3RuYW1lICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6cmVzb2x2ZShjb25z
dCBTdHJpbmcmIC8qIGhvc3RuYW1lICovLCB1aW50NjRfdCAvKiBpZGVudGlmaWVyICovLCBETlND
b21wbGV0aW9uSGFuZGxlciYmIC8qIGNvbXBsZXRpb25IYW5kbGVyICovKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlQ3VybDo6c3RvcFJlc29sdmUo
dWludDY0X3QgLyogaWRlbnRpZmllciAqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0ROU1Jlc29sdmVRdWV1ZUN1cmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3YmU1OTkxMzNi
OTYzN2NjODlhY2Y5ZDIyOTU3ZjY5ZWQ2YTczOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9ETlNSZXNvbHZlUXVldWVDdXJsLmgKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRE5TUmVzb2x2ZVF1ZXVlQ3VybCBmaW5hbCA6IHB1YmxpYyBETlNSZXNv
bHZlUXVldWUgeworcHVibGljOgorICAgIEROU1Jlc29sdmVRdWV1ZUN1cmwoKSA9IGRlZmF1bHQ7
CisgICAgdm9pZCByZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIEROU0NvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgc3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRh
dGVJc1VzaW5nUHJveHkoKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBT
dHJpbmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5T
UmVzb2x2ZVF1ZXVlQ3VybDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM4MGE3YzlmYzdlNjFkNjQ2YmUyMTM3NTkwMGUyYTRhZDM5ODM5NTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVl
U291cC5jcHAKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE5TUmVzb2x2
ZVF1ZXVlU291cC5oIgorCisjaWYgVVNFKFNPVVApCisKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKKyNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxs
aWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ly8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGls
IHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCitzdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0g
dHJ1ZTsKK3N0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKKworc3RhdGljIGJv
b2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQoreworICAgIC8vIFdlIGhhdmUgYSBsaXN0
IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRl
bSBpbiB0aGUgbGlzdCBpcworICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVu
IHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8K
KyAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmls
aXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCisgICAgLy8gaWYgd2Un
cmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIs
IGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCisgICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRv
IGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KKyAgICByZXR1cm4gdXJp
cyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKK30KKworc3RhdGljIHZv
aWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKK3sK
KyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR1VuaXF1ZVB0cjxjaGFyKj4g
dXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
RXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNz
YWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICppc1VzaW5nUHJveHlUeXBlID0g
ZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOworICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5n
SHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OworfQorCitzdGF0aWMgdm9pZCBwcm94eVJl
c29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JF
U09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJv
b2wqPih1c2VyRGF0YSkpOworfQorCitzdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKK3sKKyAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRh
KSk7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6dXBkYXRlSXNVc2luZ1Byb3h5KCkK
K3sKKyAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiByZXNvbHZlcjsKKyAgICBnX29iamVjdF9n
ZXQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNy
ZWF0ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksICJwcm94eS1yZXNvbHZlciIs
ICZyZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgQVNTRVJUKHJlc29sdmVyKTsKKwor
ICAgIGdfcHJveHlfcmVzb2x2ZXJfbG9va3VwX2FzeW5jKHJlc29sdmVyLmdldCgpLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2ZWRGb3JIdHRwVXJpQ2FsbGJhY2ss
ICZtX2lzVXNpbmdQcm94eSk7CisgICAgZ19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVz
b2x2ZXIuZ2V0KCksICJodHRwczovL2V4YW1wbGUuY29tLyIsIG51bGxwdHIsIHByb3h5UmVzb2x2
ZWRGb3JIdHRwc1VyaUNhbGxiYWNrLCAmbV9pc1VzaW5nUHJveHkpOworfQorCitzdGF0aWMgdm9p
ZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNzKiwgZ3VpbnQsIHZvaWQqKQoreworICAgIERO
U1Jlc29sdmVRdWV1ZTo6c2luZ2xldG9uKCkuZGVjcmVtZW50UmVxdWVzdENvdW50KCk7Cit9CisK
K3N0YXRpYyB2b2lkIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2soU291cEFkZHJlc3MqIGFk
ZHJlc3MsIGd1aW50IHN0YXR1cywgdm9pZCogZGF0YSkKK3sKKyAgICBBU1NFUlQoZGF0YSk7Cisg
ICAgYXV0byogcmVzb2x2ZVF1ZXVlID0gc3RhdGljX2Nhc3Q8RE5TUmVzb2x2ZVF1ZXVlU291cCo+
KGRhdGEpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IEdQT0lOVEVSX1RPX1VJTlQoZ19v
YmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcyksICJpZGVudGlmaWVyIikpOworCisgICAg
YXV0byBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSByZXNvbHZlUXVldWUtPnRha2VDb21w
bGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMoaWRlbnRpZmllcik7CisKKyAgICBpZiAoIWNvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmdldCgpLT5m
aXJzdCk7CisKKyAgICBpZiAoc3RhdHVzICE9IFNPVVBfU1RBVFVTX09LKSB7CisgICAgICAgIERO
U0Vycm9yIGVycm9yID0gRE5TRXJyb3I6OlVua25vd247CisKKyAgICAgICAgc3dpdGNoIChzdGF0
dXMpIHsKKyAgICAgICAgY2FzZSBTT1VQX1NUQVRVU19DQU5UX1JFU09MVkU6CisgICAgICAgICAg
ICBlcnJvciA9IEROU0Vycm9yOjpDYW5ub3RSZXNvbHZlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU09VUF9TVEFUVVNfQ0FOQ0VMTEVEOgorICAgICAgICAgICAgZXJyb3IgPSBE
TlNFcnJvcjo6Q2FuY2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU09V
UF9TVEFUVVNfT0s6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfTsKKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChlcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3Vw
X2FkZHJlc3NfaXNfcmVzb2x2ZWQoYWRkcmVzcykpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoRE5TRXJyb3I6OlVua25vd24pKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFZlY3RvcjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBh
ZGRyZXNzZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKyAgICBpbnQgbGVuOworICAgIGF1
dG8qIGlwQWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRyX2lu
Kj4oc291cF9hZGRyZXNzX2dldF9zb2NrYWRkcihhZGRyZXNzLCAmbGVuKSk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZigqaXBBZGRyZXNzKSAvIGxlbjsgaSsrKQorICAgICAg
ICBhZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OklQQWRkcmVzcyhpcEFkZHJlc3Nb
aV0pKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkZHJlc3Nlcyk7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnRha2VDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnModWlu
dDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
YXV0byBjb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMgPSBtX2NvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycy50YWtlKGlkZW50aWZpZXIpOworCisgICAgaWYgKCFjb21wbGV0aW9uQW5kQ2FuY2Vs
SGFuZGxlcnMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdURk1vdmUo
Y29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzKTsKK30KKwordm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpyZW1vdmVDYW5jZWxBbmRDb21wbGV0aW9uSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2NvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgRE5TUmVzb2x2ZVF1
ZXVlU291cDo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5nZXRPckNyZWF0
ZVNvdXBOZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRh
KCksIG51bGxwdHIsIHJlc29sdmVkQ2FsbGJhY2ssIG51bGxwdHIpOworfQorCit2b2lkIEROU1Jl
c29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3Qg
aWRlbnRpZmllciwgRE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBhZGRyZXNzID0gYWRvcHRH
UmVmKHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIGF1
dG8gY2FuY2VsbGFibGUgPSBhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSk7CisgICAgc291
cF9hZGRyZXNzX3Jlc29sdmVfYXN5bmMoYWRkcmVzcy5nZXQoKSwgc291cF9zZXNzaW9uX2dldF9h
c3luY19jb250ZXh0KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkuZ2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigp
KSwgY2FuY2VsbGFibGUuZ2V0KCksIHJlc29sdmVkV2l0aE9ic2VydmVyQ2FsbGJhY2ssIHRoaXMp
OworCisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVu
dGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CisKKyAgICBtX2NvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxETlNS
ZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworfQorCit2b2lkIEROU1Jl
c29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChhdXRvIGNvbXBsZXRpb25BbmRDYW5j
ZWxIYW5kbGVyID0gbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMudGFrZShpZGVudGlmaWVy
KSkgeworICAgICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbChjb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlci5nZXQoKS0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbkFuZENhbmNlbEhh
bmRsZXIuZ2V0KCktPmZpcnN0KG1ha2VVbmV4cGVjdGVkKEROU0Vycm9yOjpDYW5jZWxsZWQpKTsK
KyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ODZhNmIxMzNjYjk3MzZjYWI3YTY1ZWIxYTE2OGRlZWI4NWU3Y2RiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEROU1Jlc29sdmVRdWV1ZVNvdXAgZmluYWwgOiBw
dWJsaWMgRE5TUmVzb2x2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBDb21wbGV0aW9uQW5k
Q2FuY2VsSGFuZGxlcnMgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXIs
IEdSZWZQdHI8R0NhbmNlbGxhYmxlPj47CisKKyAgICBETlNSZXNvbHZlUXVldWVTb3VwKCkgPSBk
ZWZhdWx0OworICAgIHZvaWQgcmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRf
dCBpZGVudGlmaWVyLCBETlNDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIHN0
b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpIGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPENvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4gdGFrZUNvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycyh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUNhbmNlbEFuZENv
bXBsZXRpb25IYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZv
aWQgdXBkYXRlSXNVc2luZ1Byb3h5KCkgZmluYWw7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBz
dGQ6OnVuaXF1ZV9wdHI8Q29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzPj4gbV9jb21wbGV0aW9u
QW5kQ2FuY2VsSGFuZGxlcnM7CisKKyAgICB2b2lkIHBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKK307CisKK3VzaW5nIEROU1Jlc29sdmVRdWV1ZVBsYXRmb3JtID0gRE5TUmVz
b2x2ZVF1ZXVlU291cDsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1NvdXAuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTExNDU3
ZGRkMjIzM2M3NDNhMThjZGY4MzgzNjkwZmY4ZjYzOTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNTb3VwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgotCi0jaWYg
VVNFKFNPVVApCi0KLSNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Ly8gSW5pdGlhbGx5IHRydWUgdG8gZW5zdXJlIHByZWZldGNoIHN0YXlzIGRpc2FibGVkIHVudGls
IHdlIGhhdmUgcHJveHkgc2V0dGluZ3MuCi1zdGF0aWMgYm9vbCBpc1VzaW5nSHR0cFByb3h5ID0g
dHJ1ZTsKLXN0YXRpYyBib29sIGlzVXNpbmdIdHRwc1Byb3h5ID0gdHJ1ZTsKLQotc3RhdGljIGJv
b2wgZGlkUmVzb2x2ZVByb3h5KGNoYXIqKiB1cmlzKQotewotICAgIC8vIFdlIGhhdmUgYSBsaXN0
IG9mIHBvc3NpYmxlIHByb3hpZXMgdG8gdXNlIGZvciB0aGUgVVJJLiBJZiB0aGUgZmlyc3QgaXRl
bSBpbiB0aGUgbGlzdCBpcwotICAgIC8vIGRpcmVjdDovLyAodGhlIHVzdWFsIGNhc2UpLCB0aGVu
IHRoZSB1c2VyIHByZWZlcnMgbm90IHRvIHVzZSBhIHByb3h5LiBUaGlzIGlzIHNpbWlsYXIgdG8K
LSAgICAvLyByZXNvbHZpbmcgaG9zdG5hbWVzOiB0aGVyZSBjb3VsZCBiZSBtYW55IHBvc3NpYmls
aXRpZXMgcmV0dXJuZWQgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgYW5kCi0gICAgLy8gaWYgd2Un
cmUgdHJ5aW5nIHRvIGNvbm5lY3Qgd2Ugc2hvdWxkIGF0dGVtcHQgZWFjaCBvbmUgaW4gb3JkZXIs
IGJ1dCBoZXJlIHdlIGFyZSBub3QgdHJ5aW5nCi0gICAgLy8gdG8gY29ubmVjdCwgbWVyZWx5IHRv
IGRlY2lkZSB3aGV0aGVyIGEgcHJveHkgInNob3VsZCIgYmUgdXNlZC4KLSAgICByZXR1cm4gdXJp
cyAmJiAqdXJpcyAmJiBzdHJjbXAoKnVyaXMsICJkaXJlY3Q6Ly8iKTsKLX0KLQotc3RhdGljIHZv
aWQgZGlkUmVzb2x2ZVByb3h5KEdQcm94eVJlc29sdmVyKiByZXNvbHZlciwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGJvb2wqIGlzVXNpbmdQcm94eVR5cGUsIGJvb2wqIGlzVXNpbmdQcm94eSkKLXsK
LSAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyKj4g
dXJpcyhnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9maW5pc2gocmVzb2x2ZXIsIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygi
RXJyb3IgZGV0ZXJtaW5pbmcgc3lzdGVtIHByb3h5IHNldHRpbmdzOiAlcyIsIGVycm9yLT5tZXNz
YWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICppc1VzaW5nUHJveHlUeXBlID0g
ZGlkUmVzb2x2ZVByb3h5KHVyaXMuZ2V0KCkpOwotICAgICppc1VzaW5nUHJveHkgPSBpc1VzaW5n
SHR0cFByb3h5IHx8IGlzVXNpbmdIdHRwc1Byb3h5OwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJl
c29sdmVkRm9ySHR0cFVyaUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQotewotICAgIGRpZFJlc29sdmVQcm94eShHX1BST1hZX1JF
U09MVkVSKHNvdXJjZSksIHJlc3VsdCwgJmlzVXNpbmdIdHRwUHJveHksIHN0YXRpY19jYXN0PGJv
b2wqPih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMgdm9pZCBwcm94eVJlc29sdmVkRm9ySHR0cHNV
cmlDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCB2b2lkKiB1
c2VyRGF0YSkKLXsKLSAgICBkaWRSZXNvbHZlUHJveHkoR19QUk9YWV9SRVNPTFZFUihzb3VyY2Up
LCByZXN1bHQsICZpc1VzaW5nSHR0cHNQcm94eSwgc3RhdGljX2Nhc3Q8Ym9vbCo+KHVzZXJEYXRh
KSk7Ci19Ci0KLXZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjp1cGRhdGVJc1VzaW5nUHJveHkoKQotewot
ICAgIEdSZWZQdHI8R1Byb3h5UmVzb2x2ZXI+IHJlc29sdmVyOwotICAgIGdfb2JqZWN0X2dldChO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmdldE9yQ3JlYXRl
U291cE5ldHdvcmtTZXNzaW9uKCkuc291cFNlc3Npb24oKSwgInByb3h5LXJlc29sdmVyIiwgJnJl
c29sdmVyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICBBU1NFUlQocmVzb2x2ZXIpOwotCi0gICAg
Z19wcm94eV9yZXNvbHZlcl9sb29rdXBfYXN5bmMocmVzb2x2ZXIuZ2V0KCksICJodHRwOi8vZXhh
bXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZvckh0dHBVcmlDYWxsYmFjaywgJm1f
aXNVc2luZ1Byb3h5KTsKLSAgICBnX3Byb3h5X3Jlc29sdmVyX2xvb2t1cF9hc3luYyhyZXNvbHZl
ci5nZXQoKSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgbnVsbHB0ciwgcHJveHlSZXNvbHZlZEZv
ckh0dHBzVXJpQ2FsbGJhY2ssICZtX2lzVXNpbmdQcm94eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJl
c29sdmVkQ2FsbGJhY2soU291cEFkZHJlc3MqLCBndWludCwgdm9pZCopCi17Ci0gICAgRE5TUmVz
b2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5kZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKLX0KLQotdm9p
ZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBzb3VwX3Nlc3Npb25fcHJl
ZmV0Y2hfZG5zKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCku
Z2V0T3JDcmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCBob3N0bmFtZS51
dGY4KCkuZGF0YSgpLCBudWxscHRyLCByZXNvbHZlZENhbGxiYWNrLCBudWxscHRyKTsKLX0KLQot
dm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaW5nbGV0b24oKS5hZGQoaG9zdG5hbWUpOwot
fQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTUyMDQwNDVkYzcyMTNh
MmYwMWYyYTE0MDdjMGYwYmNjZjIzNzIxMi4uYmJkNjg0Yjc4MzM2NzgyYWE1ZDBjYzlkODhhYjMw
MTk4MWJmYTAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2Nv
YS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OlRocmVhZD4gY3JlYXRlVGhyZWFkKCkKQEAgLTE2MiwxNSArMTY2LDIy
IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpkaWRSZWNlaXZlTmV0d29ya1JUQ1NvY2tldE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAgICAgTmV0d29ya1JUQ1NvY2tldChkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSwgKnRoaXMpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisKIHZvaWQgTmV0d29ya1JUQ1Byb3Zp
ZGVyOjpjcmVhdGVSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1JU
Q1Jlc29sdmVyPihbdGhpcywgaWRlbnRpZmllcl0oTmV0d29ya1JUQ1Jlc29sdmVyOjpBZGRyZXNz
ZXNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBhdXRvIHJlc29sdmVyID0gTmV0d29y
a1JUQ1Jlc29sdmVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIGlkZW50aWZpZXJdKFdlYkNv
cmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
IXJlc3VsdC5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9
IE5ldHdvcmtSVENSZXNvbHZlcjo6RXJyb3I6OkNhbmNlbGxlZCkKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuZXJyb3IoKSAhPSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVkKQogICAgICAgICAg
ICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jl
c29sdmVyOjpSZXNvbHZlZEFkZHJlc3NFcnJvcigxKSwgaWRlbnRpZmllcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlNldFJlc29sdmVkQWRkcmVzcyhyZXN1bHQu
dmFsdWUoKSksIGlkZW50aWZpZXIpOworCisgICAgICAgIGF1dG8gYWRkcmVzc2VzID0gV1RGOjpt
YXAocmVzdWx0LnZhbHVlKCksIFtdIChhdXRvJiBhZGRyZXNzKSB7CisgICAgICAgICAgICByZXR1
cm4gUlRDTmV0d29yazo6SVBBZGRyZXNzIHsgcnRjOjpJUEFkZHJlc3MgeyBhZGRyZXNzLmdldFNp
bkFkZHIoKSB9IH07CisgICAgICAgIH0pOworCisgICAgICAgIG1fY29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVyOjpTZXRSZXNvbHZlZEFkZHJlc3Mo
YWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAgICAgcmVzb2x2ZXItPnN0YXJ0KGFk
ZHJlc3MpOwogICAgIG1fcmVzb2x2ZXJzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc29sdmVy
KSk7CkBAIC0xODIsNiArMTkzLDM0IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpzdG9wUmVz
b2x2ZXIodWludDY0X3QgaWRlbnRpZmllcikKICAgICAgICAgcmVzb2x2ZXItPnN0b3AoKTsKIH0K
IAorI2Vsc2UKKwordm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVJlc29sdmVyKHVpbnQ2
NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gW3RoaXMsIGlkZW50aWZpZXJdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09y
RXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUo
KSkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcigpICE9IFdlYkNvcmU6OkROU0Vycm9y
OjpDYW5jZWxsZWQpCisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUlRDUmVzb2x2ZXI6OlJlc29sdmVkQWRkcmVzc0Vycm9yKDEpLCBp
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1
dG8gYWRkcmVzc2VzID0gV1RGOjptYXAocmVzdWx0LnZhbHVlKCksIFtdIChhdXRvJiBhZGRyZXNz
KSB7CisgICAgICAgICAgICByZXR1cm4gUlRDTmV0d29yazo6SVBBZGRyZXNzIHsgcnRjOjpJUEFk
ZHJlc3MgeyBhZGRyZXNzLmdldFNpbkFkZHIoKSB9IH07CisgICAgICAgIH0pOworCisgICAgICAg
IG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJUQ1Jlc29sdmVy
OjpTZXRSZXNvbHZlZEFkZHJlc3MoYWRkcmVzc2VzKSwgaWRlbnRpZmllcik7CisgICAgfTsKKwor
ICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgaWRlbnRpZmllciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6c3RvcFJlc29s
dmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgV2ViQ29yZTo6c3RvcFJlc29sdmVETlMo
aWRlbnRpZmllcik7Cit9CisKKyNlbmRpZgorCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y2xv
c2VMaXN0ZW5pbmdTb2NrZXRzKEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIW1faXNMaXN0ZW5pbmdTb2NrZXRBdXRob3JpemVkKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmNwcAppbmRleCAzYzk5ODdkMDQ4MDhmM2E3MTg1NzczMTFmOWU1Y2IxNmMzZmYwMTZlLi4w
YThjYTRlNGU2OGM0MWUzMTA3ZDI0ODRiYjY3YmNmNjFlNzBjOWIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZl
ci5jcHAKQEAgLTMyLDY4ICszMiwzNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGlj
IHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBl
SW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3IsIHZvaWQgKmluZm8pCisvLyBGSVhNRTog
VXNlIHRoZSBmdW5jdGlvbiBhZnRlciByZW1vdmluZyB0aGUgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2EuCisjaWYgIVBMQVRGT1JNKENPQ09BKQorc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNv
bHZlcj4gTmV0d29ya1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3QgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBB
U1NFUlRfVU5VU0VEKHR5cGVJbmZvLCAhdHlwZUluZm8pOwotCi0gICAgaWYgKGVycm9yLT5kb21h
aW4pIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIGZhaWx1cmUsIGJ1dCBpbmZv
IGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY2FsbGJhY2suCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgYXV0byogcmVzb2x2ZXIgPSBzdGF0aWNfY2FzdDxO
ZXR3b3JrUlRDUmVzb2x2ZXIqPihpbmZvKTsKLQotICAgIEJvb2xlYW4gcmVzdWx0OwotICAgIENG
QXJyYXlSZWYgcmVzb2x2ZWRBZGRyZXNzZXMgPSAoQ0ZBcnJheVJlZilDRkhvc3RHZXRBZGRyZXNz
aW5nKGhvc3RSZWYsICZyZXN1bHQpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OwotCi0gICAgc2l6ZV90IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KHJlc29sdmVkQWRkcmVzc2Vz
KTsKLSAgICBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiBhZGRyZXNzZXM7Ci0gICAgYWRk
cmVzc2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIENGRGF0YVJlZiBk
YXRhID0gKENGRGF0YVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc29sdmVkQWRkcmVzc2Vz
LCBpbmRleCk7Ci0gICAgICAgIGF1dG8qIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHN0cnVjdCBzb2NrYWRkcl9pbio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICAgICAgICBh
ZGRyZXNzZXMudW5jaGVja2VkQXBwZW5kKFJUQ05ldHdvcms6OklQQWRkcmVzcyhydGM6OklQQWRk
cmVzcyhhZGRyZXNzLT5zaW5fYWRkcikpKTsKLSAgICB9Ci0gICAgcmVzb2x2ZXItPmNvbXBsZXRl
ZChhZGRyZXNzZXMpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1JUQ1Jlc29s
dmVyPihuZXcgTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7CiB9CisjZW5kaWYKIAotTmV0d29ya1JUQ1Jlc29sdmVyOjpOZXR3b3JrUlRD
UmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICA6IG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCitOZXR3b3JrUlRD
UmVzb2x2ZXI6Ok5ldHdvcmtSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpETlNDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewogfQogCiBOZXR3b3JrUlRDUmVzb2x2ZXI6On5OZXR3b3JrUlRD
UmVzb2x2ZXIoKQogewotICAgIENGSG9zdFVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2hvc3QuZ2V0
KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLSAgICBD
Rkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKICAgICBpZiAo
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEVycm9yOjpVbmtub3duKSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkROU0Vy
cm9yOjpVbmtub3duKSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyOjpzdGFydChjb25z
dCBTdHJpbmcmIGFkZHJlc3MpCiB7Ci0gICAgbV9ob3N0ID0gYWRvcHRDRihDRkhvc3RDcmVhdGVX
aXRoTmFtZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZGRyZXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpKTsKLSAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKLSAgICBDRkhvc3RTZXRDbGllbnQobV9ob3N0LmdldCgp
LCByZXNvbHZlZE5hbWUsICZjb250ZXh0KTsKLSAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29w
KG1faG9zdC5nZXQoKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUpOwotICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U3RhcnRJbmZvUmVzb2x1dGlvbihtX2hv
c3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNzZXMsIG51bGxwdHIpOwotICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworICAgIFdlYkNvcmU6OnJlc29sdmVETlMoYWRkcmVzcywgbV9pZGVu
dGlmaWVyLCBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UlRDUmVzb2x2ZXI6OnN0b3AoKQogewotICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1f
aG9zdC5nZXQoKSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOwotICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoRXJyb3I6OkNhbmNlbGxlZCkp
OwotfQotCi12b2lkIE5ldHdvcmtSVENSZXNvbHZlcjo6Y29tcGxldGVkKGNvbnN0IFZlY3RvcjxS
VENOZXR3b3JrOjpJUEFkZHJlc3M+JiBhZGRyZXNzZXMpCi17Ci0gICAgaWYgKGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IGFkZHJlc3NlcyB9KTsKKyAgICBXZWJDb3JlOjpzdG9wUmVzb2x2ZURO
UyhtX2lkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVy
LmgKaW5kZXggMWJjZjczNmU3NjdhNjcwNGI1Y2U5N2NkYThjNzIzYmRlMzVlNzI3OC4uMzhlNWY3
NjI3MmM1ODAyYmNiMDNlYWI3MzY0MTgwMDY0OTk2NTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyLmgKQEAg
LTI4LDcgKzI4LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiUlRDTmV0d29y
ay5oIgotI2luY2x1ZGUgPENGTmV0d29yay9DRkhvc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RO
Uy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNiwyMiArMzYsMTcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIE5ldHdvcmtSVENSZXNvbHZlciB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBF
cnJvciB7IFVua25vd24sIENhbmNlbGxlZCB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya1JUQ1Jlc29sdmVyPiBjcmVhdGUodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6
RE5TQ29tcGxldGlvbkhhbmRsZXImJik7CiAKLSAgICB1c2luZyBBZGRyZXNzZXNPckVycm9yID0g
RXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6
SVBBZGRyZXNzPj4sIEVycm9yPjsKLSAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChBZGRyZXNzZXNPckVycm9yJiYpPjsKKyAgICBOZXR3b3Jr
UlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhh
bmRsZXImJik7CisgICAgdmlydHVhbCB+TmV0d29ya1JUQ1Jlc29sdmVyKCk7CiAKLSAgICBleHBs
aWNpdCBOZXR3b3JrUlRDUmVzb2x2ZXIoQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgfk5ldHdv
cmtSVENSZXNvbHZlcigpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChjb25zdCBTdHJpbmcmIGFk
ZHJlc3MpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKLSAgICB2b2lkIHN0YXJ0KGNvbnN0
IFN0cmluZyYgYWRkcmVzcyk7Ci0gICAgdm9pZCBzdG9wKCk7Ci0KLSAgICB2b2lkIGNvbXBsZXRl
ZChjb25zdCBWZWN0b3I8UlRDTmV0d29yazo6SVBBZGRyZXNzPiYpOwotCi1wcml2YXRlOgotICAg
IENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRsZXI7Ci0gICAgUmV0YWluUHRyPENG
SG9zdFJlZj4gbV9ob3N0OworcHJvdGVjdGVkOgorICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsK
KyAgICBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDk0ZGFlNDQ2ZDljNTJiMTgyNzU4ODhlYTdjZWNjYzI0NTYyNWU5ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENSZXNvbHZlckNvY29hLmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5oIgor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgcmVzb2x2ZWROYW1lKENGSG9zdFJlZiBob3N0
UmVmLCBDRkhvc3RJbmZvVHlwZSB0eXBlSW5mbywgY29uc3QgQ0ZTdHJlYW1FcnJvciAqZXJyb3Is
IHZvaWQgKmluZm8pCit7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlSW5mbywgIXR5cGVJbmZvKTsK
KworICAgIEFTU0VSVChpbmZvKTsKKyAgICBhdXRvKiByZXNvbHZlciA9IHN0YXRpY19jYXN0PE5l
dHdvcmtSVENSZXNvbHZlckNvY29hKj4oaW5mbyk7CisKKyAgICBpZiAoZXJyb3ItPmRvbWFpbikg
eworICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBoYW5kbGUgZmFpbHVyZSwgYnV0IGluZm8gaXMg
bm90IHByb3ZpZGVkIGluIHRoZSBjYWxsYmFjay4KKyAgICAgICAgcmVzb2x2ZXItPmNvbXBsZXRl
ZChtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpETlNFcnJvcjo6VW5rbm93bikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQm9vbGVhbiByZXN1bHQ7CisgICAgQ0ZBcnJheVJlZiByZXNv
bHZlZEFkZHJlc3NlcyA9IChDRkFycmF5UmVmKUNGSG9zdEdldEFkZHJlc3NpbmcoaG9zdFJlZiwg
JnJlc3VsdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisKKyAgICBzaXpl
X3QgY291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzb2x2ZWRBZGRyZXNzZXMpOworICAgIFZlY3Rv
cjxXZWJDb3JlOjpJUEFkZHJlc3M+IGFkZHJlc3NlczsKKyAgICBhZGRyZXNzZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShjb3VudCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSAoQ0ZEYXRhUmVm
KUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb2x2ZWRBZGRyZXNzZXMsIGluZGV4KTsKKyAgICAg
ICAgYXV0byogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc3RydWN0IHNvY2thZGRy
X2luKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisgICAgICAgIGFkZHJlc3Nlcy51bmNoZWNr
ZWRBcHBlbmQoV2ViQ29yZTo6SVBBZGRyZXNzKCphZGRyZXNzKSk7CisgICAgfQorICAgIHJlc29s
dmVyLT5jb21wbGV0ZWQoV1RGTW92ZShhZGRyZXNzZXMpKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtSVENSZXNvbHZlcj4gTmV0d29ya1JUQ1Jlc29sdmVyOjpjcmVhdGUodWludDY0X3Qg
aWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSVENSZXNvbHZlcj4o
bmV3IE5ldHdvcmtSVENSZXNvbHZlckNvY29hKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7Cit9CisKK05ldHdvcmtSVENSZXNvbHZlckNvY29hOjpOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpETlNDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogTmV0d29ya1JUQ1Jlc29sdmVyKGlkZW50
aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQoreworfQorCitOZXR3b3JrUlRDUmVz
b2x2ZXJDb2NvYTo6fk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkKK3sKKyAgICBDRkhvc3RVbnNj
aGVkdWxlRnJvbVJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0U2V0Q2xpZW50KG1faG9zdC5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2E6OnN0
YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykKK3sKKyAgICBtX2hvc3QgPSBhZG9wdENGKENGSG9z
dENyZWF0ZVdpdGhOYW1lKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkZHJlc3MuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOworICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgdGhp
cywgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgIENGSG9zdFNldENsaWVudChtX2hv
c3QuZ2V0KCksIHJlc29sdmVkTmFtZSwgJmNvbnRleHQpOworICAgIENGSG9zdFNjaGVkdWxlV2l0
aFJ1bkxvb3AobV9ob3N0LmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BE
ZWZhdWx0TW9kZSk7CisgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTdGFydEluZm9SZXNvbHV0
aW9uKG1faG9zdC5nZXQoKSwga0NGSG9zdEFkZHJlc3NlcywgbnVsbHB0cik7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgTmV0d29ya1JUQ1Jlc29sdmVyQ29j
b2E6OnN0b3AoKQoreworICAgIENGSG9zdENhbmNlbEluZm9SZXNvbHV0aW9uKG1faG9zdC5nZXQo
KSwgQ0ZIb3N0SW5mb1R5cGU6OmtDRkhvc3RBZGRyZXNzZXMpOworICAgIGlmIChhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6RE5TRXJyb3I6OkNhbmNlbGxl
ZCkpOworfQorCit2b2lkIE5ldHdvcmtSVENSZXNvbHZlckNvY29hOjpjb21wbGV0ZWQoV2ViQ29y
ZTo6RE5TQWRkcmVzc2VzT3JFcnJvciYmIGFkZHJlc3Nlc09yRXJyb3IpCit7CisgICAgaWYgKGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGFkZHJlc3Nlc09yRXJyb3IpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENSZXNvbHZlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg0MTk4ZDE2YTAxMmY0MWIzYTFhYzdlN2E1
ZWFhZTNiM2NkYjQwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlckNvY29hLmgKQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1
ZGUgIk5ldHdvcmtSVENSZXNvbHZlci5oIgorCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSG9zdC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIHdo
ZW4gd2UgY29tcGxldGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBETlNSZXNvbHZlUXVldWVD
Rk5ldC4KK2NsYXNzIE5ldHdvcmtSVENSZXNvbHZlckNvY29hIGZpbmFsIDogcHVibGljIE5ldHdv
cmtSVENSZXNvbHZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6RE5TQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgfk5ldHdvcmtSVENSZXNvbHZlckNvY29hKCkgZmluYWw7CisKKyAgICB2b2lkIHN0
YXJ0KGNvbnN0IFN0cmluZyYgYWRkcmVzcykgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7
CisKKyAgICB2b2lkIGNvbXBsZXRlZChXZWJDb3JlOjpETlNBZGRyZXNzZXNPckVycm9yJiYpOwor
Citwcml2YXRlOgorICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IG1faG9zdDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE4YTkxOGZiMmNh
Yzg0ZTVmYTRiNWUyZDcyOWYxNmM3YjZkYTFiZWQuLjhhYzU2YTBkMTA1ZWE5MDdjMjNkYjJmNzhk
ZDMxZTM1YThiNmM3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTE1LDYgKzkxNSw3IEBACiAJCTQxMDQ4MkNEMURERDMyNEMwMEYw
MDZEMCAvKiBSVENOZXR3b3JrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMDQ4MkNCMURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmNwcCAq
LzsgfTsKIAkJNDEwNDgyQ0UxREREMzI0RjAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDQ4MkNDMURERDJGQjUw
MEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi87IH07CiAJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzg3
NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDExMkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENS
ZXNvbHZlci5jcHAgKi87IH07CisJCTQxMTJCNTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVy
Q29jb2EuY3BwICovOyB9OwogCQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2ViUlRD
TmV0d29yay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDExQjIyNjIxRTM3MTI0NDAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCAqLzsgfTsKIAkJ
NDEzMDc1QTkxREU4NUYyQzAwMzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OTgxREU4NEZCMDAw
MzlFQzY5IC8qIE5ldHdvcmtSVENTb2NrZXQuY3BwICovOyB9OwogCQk0MTMwNzVBQTFERTg1RjMw
MDAzOUVDNjkgLyogTmV0d29ya1JUQ01vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1OUExREU4NEZCMDAwMzlFQzY5IC8qIE5ldHdv
cmtSVENNb25pdG9yLmNwcCAqLzsgfTsKQEAgLTMyODcsNiArMzI4OCw4IEBACiAJCTQxMDQ4MkND
MURERDJGQjUwMEYwMDZEMCAvKiBSVENOZXR3b3JrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJUQ05ldHdvcmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MkI1NDcxRjlGRDNBQjAwRTY3ODc1IC8qIE5ldHdvcmtSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3Jr
UlRDUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1JU
Q1Jlc29sdmVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29s
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTJCNTQ3MUY5RkQzQUIwMEU2
Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHA7IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTEyQjU0ODFGOUZEM0FDMDBFNjc5ODYgLyogTmV0d29ya1JU
Q1Jlc29sdmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29y
a1JUQ1Jlc29sdmVyQ29jb2EuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUmVzb2x2ZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTFCMjI2
MjFFMzcxMjQ0MDA0RjczNjMgLyogTGliV2ViUlRDTmV0d29yay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENOZXR3b3JrLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENOZXR3b3JrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3
NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRDU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtSVENTb2NrZXQuY3BwOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUlRDU29ja2V0Lmg7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1NvY2tldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIzNiw2ICs2MjM5LDggQEAKIAkJCQk0MURDNDU5ODFF
M0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovLAogCQkJ
CTQxMTJCNTQ3MUY5RkQzQUIwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuY3BwICovLAog
CQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzg3NSAvKiBOZXR3b3JrUlRDUmVzb2x2ZXIuaCAqLywK
KwkJCQk0MTEyQjU0NzFGOUZEM0FCMDBFNjc5ODYgLyogTmV0d29ya1JUQ1Jlc29sdmVyQ29jb2Eu
Y3BwICovLAorCQkJCTQxMTJCNTQ4MUY5RkQzQUMwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2
ZXJDb2NvYS5oICovLAogCQkJCTQxMzA3NTk4MURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0LmNwcCAqLywKIAkJCQk0MTMwNzU5OTFERTg0RkIwMDAzOUVDNjkgLyogTmV0d29ya1JU
Q1NvY2tldC5oICovLAogCQkJCTQxMzA3NTlEMURFODRGQjAwMDM5RUM2OSAvKiBOZXR3b3JrUlRD
U29ja2V0Lm1lc3NhZ2VzLmluICovLApAQCAtMTA2MjEsNiArMTA2MjYsNyBAQAogCQkJCTQxREM0
NTk3MUUzRDZFMjIwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJFIC8qIE5ldHdvcmtSVENQcm92aWRlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTEyQjU1NTFGQTBFQTdBMDBF
Njc4NzUgLyogTmV0d29ya1JUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTJC
NTU1MUZBMEVBN0EwMEU2Nzk4NiAvKiBOZXR3b3JrUlRDUmVzb2x2ZXJDb2NvYS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MTMwNzVBOTFERTg1RjJDMDAzOUVDNjkgLyogTmV0d29ya1JUQ1NvY2tl
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MUQgLyogTmV0
d29ya1JUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzgy
ODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZWY3OGY2YTk5ZjNjN2JlZTRmMWM1NDY3MjM2MTY2MmNkZDFkMjViMS4uMjM4NDY2NGUx
MzViM2UxNjU2ZWY2ZjUyNzAzMTE5MWFmZmUxZjMwYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTA3ICBB
bGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAgIE1ha2UgTmV0
d29ya1JUQ1Jlc29sdmVyIHBvcnQgYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODg1NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgQWRkZWQgbmV3IHVuaXQgdGVzdHMgZm9yIGhlIHJlc29sdmUg
YW5kIHN0b3BSZXNvbHZlIGZ1bmN0aW9ucy4gV2UgbmVlZCB0byBjb21waWxlIHRoZW0gZm9yIHRo
ZQorICAgICAgICBvdGhlciBwbGF0Zm9ybXMgd2hlbiB0aGUgQVBJcyBhcmUgc3VwcG9ydGVkLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRE5TLmNwcDoKKwogMjAxOC0wMy0wNiAgRG9taW5p
ayBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQVJNXSBEaXNhYmxl
IHRlc3RzIHRoYXQgcnVuIG91dCBvZiBtZW1vcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RL
LmNtYWtlCmluZGV4IDRhZWY2OTUzY2QxNjE0YmY2Y2YwM2NlMjI0OGFmYjNjNmQyZGU1ZjguLjYy
MDJmNDZiYWYwYjMzNzg1Yzg1Y2FkNzJjNmIyODMzYmU4ODdkNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtODcsNiArODcsNyBAQCBhZGRfZXhlY3V0YWJsZShUZXN0
V2ViQ29yZQogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0NTU1BhcnNlci5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL0dyaWRQb3NpdGlvbi5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ROUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgwMTQ5ZjdmNzJm
ZGYwM2VjMmVlNmE0YzMwNGRjMmZmZmVkOTBlMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ETlMuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIK
KyNpbmNsdWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRE5T
Lmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworYm9vbCBkb25lID0gZmFsc2U7
CisKK1RFU1QoRE5TVGVzdCwgY2FuY2VsUmVzb2x2ZUROUykKK3sKKyAgICBSdW5Mb29wOjppbml0
aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGNvbnN0IFN0cmluZyBob3N0bmFtZSA9IFN0cmlu
Zygid3d3LndlYmtpdC5vcmciKTsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gMTsKKworICAg
IEROU0NvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyID0gW10oV2ViQ29yZTo6RE5T
QWRkcmVzc2VzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGRvbmUgPSB0cnVl
OworCisgICAgICAgIEFTU0VSVF9GQUxTRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworICAgICAgICBB
U1NFUlRfVFJVRShyZXN1bHQuZXJyb3IoKSA9PSBXZWJDb3JlOjpETlNFcnJvcjo6Q2FuY2VsbGVk
KTsKKworICAgICAgICByZXR1cm47CisgICAgfTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBy
ZXNvbHZlRE5TKGhvc3RuYW1lLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgc3RvcFJlc29sdmVETlMoaWRlbnRpZmllcik7CisgICAgVXRpbDo6cnVuKCZkb25l
KTsKK30KKworVEVTVChETlNUZXN0LCBjYW5ub3RSZXNvbHZlRE5TKQoreworICAgIFJ1bkxvb3A6
OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgY29uc3QgU3RyaW5nIGhvc3RuYW1lID0g
U3RyaW5nKCJub3RhdmFsaWRkb21haW4ubm90YXZhbGlkZG9tYWluIik7CisgICAgdWludDY0X3Qg
aWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFu
ZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nlc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUg
eworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAgICAgICBBU1NFUlRfRkFMU0UocmVzdWx0Lmhh
c192YWx1ZSgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocmVzdWx0LmVycm9yKCkgPT0gV2ViQ29y
ZTo6RE5TRXJyb3I6OkNhbm5vdFJlc29sdmUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9Owor
CisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlkZW50aWZpZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQor
CitURVNUKEROU1Rlc3QsIHJlc29sdmVETlMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7CisKKyAgICBjb25zdCBTdHJpbmcgaG9zdG5hbWUgPSBTdHJpbmcoInd3dy53
ZWJraXQub3JnIik7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IDE7CisKKyAgICBETlNDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlciA9IFtdKFdlYkNvcmU6OkROU0FkZHJlc3Nl
c09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBkb25lID0gdHJ1ZTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOworCisgICAgICAgIHJldHVybjsK
KyAgICB9OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIHJlc29sdmVETlMoaG9zdG5hbWUsIGlk
ZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBVdGlsOjpydW4oJmRv
bmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>